gpt4 book ai didi

c++ - VB.NET DLL中的C++ DLL函数复制

转载 作者:行者123 更新时间:2023-12-01 14:54:30 24 4
gpt4 key购买 nike

我很迷茫,是个新手,所以请耐心等待。

在C++中,该函数如下所示:

int __stdcall helloworld(HWND mWnd, HWND aWnd, char *data, char *parms, BOOL show, BOOL nopause) {
strcpy(data, "hello world");
return 3;
}

我正在尝试在VB.NET中复制它,并且 char *datachar *parms部分碰壁了。

Public Shared Function helloworld(ByVal mWnd As IntPtr, ByVal aWnd As IntPtr, ByRef data As Char, ByRef parms As Char, ByVal show As Boolean, ByVal nopause As Boolean) As Integer
data = "hello world"
Return 3
End Function

这导致输出 "h",所以我尝试了 data(),这导致乱码。然后我在某处读取到VB.NET中等效于C / C++ char的字节,因此我尝试了 data() As Bytedata = System.Text.Encoding.Default.GetBytes("hello world"),这又导致了乱码。

DLL接收到的内容无法更改,因此我需要找到一种VB.NET对其进行处理的方法。我的问题是;如何在VB.NET中做到这一点?还能做到吗?

最佳答案

经过一些密集的按钮粉碎后,由于Visual Vincent的StringBuilder建议,我设法做到了:

Imports System.Runtime.InteropServices
Imports System.Text
Public Class MyClass
<DllExport(CallingConvention.StdCall)>
Public Shared Function helloworld(ByVal mWnd As IntPtr, ByVal aWnd As IntPtr, ByVal data As StringBuilder, ByVal parms As StringBuilder, ByVal show As Boolean, ByVal nopause As Boolean) As Integer
data.Append("hello world")
Return 3
End Function
End Class

也将ByRef更改为ByVal。

关于c++ - VB.NET DLL中的C++ DLL函数复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58878434/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com