相关疑难解决方法(0)

如何将wchar_t*从C++编组为C#作为out参数或返回值?

我试图以多种方式做到这一点,但没有一个是有效的.有人有一个正确的例子吗?我只想将wchar_t*值从函数移动到C#级别.

.net c# c++ interop marshalling

7
推荐指数
1
解决办法
2万
查看次数

从 C# 调用 wstring C++ 方法

我正在使用 C# 代码,需要在 C++ dll 中调用此方法。

static std::wstring DecryptData(const std::wstring& strKey);
Run Code Online (Sandbox Code Playgroud)

我读过很多东西,我最好的猜测是传递一些对于两种语言都更容易阅读的东西,比如字符数组甚至字节数组,然后在 C++ 中构建 wstring,然后在 C# 中构建字符串。

有人已经这样做了吗?

编辑:

我阅读了链接主题,但没有一个答案对我有帮助:使用const没有帮助。

这就是我现在拥有的:C#

 [DllImport(DLL_PATH, CharSet = CharSet.Unicode)]
        [return: MarshalAs(UnmanagedType.LPWStr)]
        public static extern string DecryptData([MarshalAs(UnmanagedType.LPWStr)]string strKey);
Run Code Online (Sandbox Code Playgroud)

C++

extern "C" __declspec(dllexport) const std::wstring DecryptData(const std::wstring& strKey) {
    return WlanHelper::CWirelessHelper::DecryptData(strKey);
}
Run Code Online (Sandbox Code Playgroud)

这给了我一个 PInvokeStackImbalance =/

c# c++ wstring

1
推荐指数
1
解决办法
5391
查看次数

标签 统计

c# ×2

c++ ×2

.net ×1

interop ×1

marshalling ×1

wstring ×1