我第一次尝试从 Linux 上的 dotnet 服务调用 C++ 包装函数。
C++代码:
extern "C" std::string myfunc(int a, int b){
std::string mystring = funcB(a, b);
return mystring;
}
c#代码:
public string myCsharpFunc getA(int a, int b){
return callMyFunc(a, b);
}
[DllImport("xxxx.so", EntryPoint ="myfunc", CallingConvention= CallingConvertion.Cdecl)]
private static extern string callMyfunc(int a, int b);
dotnet 服务运行良好,我可以进行测试 GET。我也可能遇到 myFunc 并且 funcB 的返回看起来是正确的。但是当 mystring 返回一个分段错误(核心转储)时,一切都崩溃了。似乎即使我将 mystring 返回为“test”,程序也会以同样的方式崩溃。我错过了什么?