使用来自vb6的c字符串传递struct

时间:2017-06-08 08:49:58

标签: dll vb6 interop dllimport

这似乎是一个简单的问题,但我似乎无法得到答案。我有一个dll,它有这样的界面:

masters:qams-1.0.0.war

dll会填写几个字符串。 我怎样才能在VB6中使用这个界面?如何初始化要使用的字符串,例如64个字符长的固定长度字符串?

1 个答案:

答案 0 :(得分:1)

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

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

返回值将是上述Error值。 Lib字段假定DLL在您的路径中 - 如果没有,您可以进一步限定它。

所有这些都是空气代码,因为没有经过测试,所以无法保证。