我有下面的C++代碼:調用C++導出的函數在C#
#pragma once
#include "StdAfx.h"
#include <string>
using namespace std;
using namespace System;
extern "C" __declspec(dllexport) string __stdcall GetVale()
{
return "test";
}
我想通過這樣來調用C#這樣的功能:
[DllImport("Security.dll", CallingConvention = CallingConvention.StdCall, ExactSpelling = true, EntryPoint = "[email protected]")]
internal static extern string Getvalue();
我這樣做只是爲了學習並真正理解。當我打電話給我時,我收到一個PInvoke異常,說我的CallingConvention不正確。我相信我的文件中的錯誤非常小。我知道入口點是「_GetVale @ 4」,因爲我使用了一個程序來查找它。如果我不能把它改成其他任何東西,它會拋出一個找不到的入口點,所以我的問題是其他地方的問題。
我究竟做錯了什麼?謝謝!
您不能調用返回C++對象(如std :: string)的C++函數。 C++/CLI包裝器是必需的。 – 2012-03-17 07:44:39