P / Invoke使用DllImport将字符串从C#传递给C ++

时间:2018-04-09 07:53:05

标签: c# c++ pinvoke dllimport dllexport

我有一个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。

0 个答案:

没有答案