gpt4 book ai didi

c - VB6中如何从指针获取字符串

转载 作者:行者123 更新时间:2023-11-30 17:48:29 28 4
gpt4 key购买 nike

我必须用VB6调用C DLL。

C 代码

short int decode(BOOL Mode, char* tete, char* adresse, char* status, char* nombre, char* datadecode);

我的 VB 代码:

Private Declare Function decode Lib "VBdecode.dll" ( _ 
ByVal Mode As Long, _
ByVal tete As String, _
ByVal adresse As String, _
ByVal status As String, _
ByVal nombre As String, _
ByVal datadecode As String) As Long
Dim retour_lire As Long
Dim buffer(4) As Byte
Dim vbcData as string
Dim i As Integer
Dim chdecode As string

retour_lire = Byte_read(True, "4", "00", buffer, "16", vbcData)

For i = 1 To 10
chdecode = vbcData(i)
Next

MsgBox chdecode

但是我的 VB6 代码无法运行。

请提出任何想法、建议或更正。

请帮助我,我依靠你。

最佳答案

评论实际上是错误的。你是对的。 VB6 会将String(无论如何以这种方式发送)转换为char*。如果您使用 VarPtr() 或使用 As Any,它们是对的。

你的问题是返回值。将 C++ 端的 short int 更改为 int 或将 VB6 端的 As Long 更改为 As Integer

所以要么:

int decode(BOOL Mode, char* tete, char* adresse, char* status, char* nombre, char* datadecode);

或者:

Private Declare Function decode Lib "VBdecode.dll" ( _ 
ByVal Mode As Long, _
ByVal tete As String, _
ByVal adresse As String, _
ByVal status As String, _
ByVal nombre As String, _
ByVal datadecode As String) As Integer

两者都不是:)!

值得注意的是,您的示例代码实际上并未调用 decode()。因此,另一个问题(这只是一个猜测)是您试图更改 C++ 端字符串的内容。您可以更改字符串,但无法重新分配它。因此,您需要调整其大小(使用 Space$())。

关于c - VB6中如何从指针获取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18562873/

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