使用 vb6 中的 c 字符串传递结构

Pass struct with c strings from vb6

这似乎是个简单的问题,但我似乎无法google 找到答案。我有一个具有如下接口的 dll:

struct TestResults
{
    int StringLengths;
    Error Error;
    LPTSTR SerialNumber;
    LPTSTR Application;
    LPTSTR GSM;
};

extern "C" Error DLLNAME_ _stdcall GetResult(TestResults* testResults);

dll 将填充几个字符串。 如何从 VB6 使用此接口?我如何初始化字符串以使用例如 64 个字符的固定长度字符串?

我假设 Error 被定义为一个 32 位整数,这意味着在 VB 中你的类型应该是这样的:

Type ResultsType
    StringLengths As Long
    ErrorValue As Long
    SerialNumber As Long
    Application As Long
    GSM As Long
End Type

Dim testResults As ResultsType

每个字符串都应该是预先确定大小的可变长度字符串,例如;

Dim strGSM as String
strGSM = String$(64, 0)
testResults.GSM = StrPtr(strGSM)

声明将是:

Declare Function GetResult Lib "DLLNAME" (ByVal testResults As ResultsType) As Long

return 值将是上述 Error 值。 Lib 字段假定 DLL 在您的路径中——如果不在,您可以进一步限定它。

所有这些都是航空代码,没有任何保证,因为它没有经过测试。