extern "C" __declspec(dllexport)bool __stdcall GetError(char** sErrorStr, ERROR_ENUM* nError);
[DllImport(DllName)] public extern static bool GetError(ref string sErrorStr, ref ERROR_ENUM nError);
... 我是要C++传递string给c#使用,不是c#发参数给c++。
[quote=引用 4 楼 alexsun6 的回复:] [quote=引用 3 楼 Libby1984 的回复:] 不需要ref,因为字符串本来就是引用传递,还有c++中的字符串应该是char* 类型的,不是char** ,你那是指针的指针,一个*就够了。
[quote=引用 3 楼 Libby1984 的回复:] 不需要ref,因为字符串本来就是引用传递,还有c++中的字符串应该是char* 类型的,不是char** ,你那是指针的指针,一个*就够了。
改成: ERROR_ENUM GetError(char* sErrorStr, int& sErrorStrLength); [DllImport(DllName)] public extern static ERROR_ENUM GetError(StringBuilder, ref int sbLength);
传递字符串 c dll里面用 char* c#用StringBuilder来引用 不需要ref
不需要ref,因为字符串本来就是引用传递,还有c++中的字符串应该是char* 类型的,不是char** ,你那是指针的指针,一个*就够了。
111,128
社区成员
642,533
社区内容
加载中
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧