我试图使如何在C#中的C ++ DLL之间传递字符串的绝对最简单的最小示例。
我的C ++看起来像这样:
using std::string;
extern "C" {
string concat(string a, string b){
return a + b;
}
}
像这样的标题
using std::string;
extern "C" {
// Returns a + b
__declspec(dllexport) string concat(string a, string b);
}
我的C#是
[DllImport("*****.dll", CallingConvention = CallingConvention.Cdecl)]
static extern string concat(string a, string b);
}
我用以下方式调用它:Console.WriteLine(concat(“ a”,“ b”));
但这给出了System.AccessViolationException。看来这似乎是最琐碎的事情,但是我完全坚持了下来。当我尝试使用“添加”功能进行类似的实验时,该函数进行了两次加倍操作并返回了一次加倍操作,我没有遇到任何问题。
守着星空守着你
元芳怎么了