我正在尝试使用平台调用将字符串从 C# 传递到 C++。
C++ 代码:
#include<string> using namespace std; extern "C" { double __declspec(dllexport) Add(double a, double b) { return a + b; } string __declspec(dllexport) ToUpper(string s) { string tmp = s; for(string::iterator it = tmp.begin();it != tmp.end();it++) (*it)-=32; return tmp; } }
C#代码:
[DllImport("TestDll.dll", CharSet = CharSet.Ansi, CallingConvention =CallingConvention.Cdecl)] public static extern string ToUpper(string s); static void Main(string[] args) { string s = "hello"; Console.WriteLine(Add(a,b)); Console.WriteLine(ToUpper(s)); }
我收到一个 SEHException。就不能这样使用std::string
吗?我应该char*
改用吗?