我有一个CPP应用程序,我想调用我的C#应用程序,但我在将ref字符串参数传递给接受std :: wstring的CPP方法时遇到问题。
我的代码如下:
CPP标题:
namespace NMSP
{
extern "C"
{
__declspec(dllexport) int MyCPPMethod(std::wstring &StrCode);
}
CPP来源:
__declspec(dllexport) int NMSP::MyCPPMethod(std::wstring &StrCode)
{
StrCode = "12345";
return 1;
}
C#:
[DllImport(@"MyExternal.dll", CharSet = CharSet.Unicode)]
static extern int MyCPPMethod(ref string StrCode);
string strVer = "version";
var rcver = MyCPPMethod(ref strVer);
当访问CPP方法时,我得到"错误读取字符串"来自std::wstring &StrCode
值的错误。
我已尝试使用StringBuilder str = new StringBuilder("version", 1024);
,但没有运气。
如果我将std :: wstring更改为char *,我会得到' v' (在参数中发送"版本"时) - 我仍感到困惑。
任何帮助将不胜感激。 THX。