我使用第三方C++ DLL,它使用的是具有以下特征的函数:如何将包含数组ByVal的结构传递给C++?
extern "C" __declspec(dllimport) int __stdcall CalcDDtable(struct ddTableDeal tableDeal,
struct ddTableResults * tablep);
的结构各自包含的int
秒(VB6 Long
多个)只是一个固定一个维阵列。 tablep
将包含结果。
有C++声明了:
extern "C" __declspec(dllimport) int __stdcall CalcDDtable(int * tableDeal, int * tablep);
那么VB6 Declare
声明本来:
Declare Function CalcDDtable Lib "my3rdParty.dll"(ByRef lngTable as Long,ByRef lngResult as Long) as int
This code would be called like:
Dim lngTables(15) As Long
Dim lngResults(20) As Long
'Initialize the lngTables array...
intResult=CalcDDtabel(lngTables(0),lngResults(0))
但我不知如何申报以上,因为第一阵列功能打包在不是指针的结构中。
我可能是错的,但我相信你需要在VB中重新创建结构,然后你可以使用它作为byval,byref类型来代替longs。 – M4rc
请参阅Microsoft [用于开发VB6的dll的注意事项](http://vb.mvps.org/tips/vb5dll.asp) – MarkJ