【发布时间】:2014-01-12 04:06:53
【问题描述】:
我正在尝试制作一个绝对最简单的最小示例,说明如何在 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。这似乎是最微不足道的事情,但我完全坚持下去。当我尝试使用“添加”函数进行类似的实验时,该函数需要两个双精度并返回一个双精度,我没有遇到任何问题。
【问题讨论】: