使用 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 在您的路径中——如果不在,您可以进一步限定它。
所有这些都是航空代码,没有任何保证,因为它没有经过测试。
这似乎是个简单的问题,但我似乎无法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 在您的路径中——如果不在,您可以进一步限定它。
所有这些都是航空代码,没有任何保证,因为它没有经过测试。