我其实认为this问题在这个话题上更好。
综上所述,你可以“把它放在那里的函数声明进口”,但VB6 IDE不知道如何调试这样的事情。但编译器处理它就好了。一旦你将它编译成一个dll,那么你的主项目就可以访问编译的功能。
也许你在问如何将这些移动到一个DLL?如果是这种情况,则需要创建一个新的“ActiveX Dll”类型的项目。将其命名为PwrUSB。接下来,添加一个类(或者如果提供了默认/空的,则将其重命名为PwrUSBApi)。接下来,在属性窗口中,将该类设置为GlobalMultiUse。在一个模块调用MDeclares,滴在所有声明:
'from your other post...
Public Declare Function InitPowerDevice CDecl Lib "PwrDeviceDll.dll" (ByRef firmware() As Byte) As Long
回到你PwrUSBApi类:
'forward your calls to the dll
Public Function InitPowerDevice (ByRef firmware() As Byte) As Long
InitPowerDevice = MDeclares.InitPowerDevice(firmware)
End Function
你可以创建一个从API更完全成熟的对象模型,但我从这个简单的包装开始,直到你理清了所有的API。
哦,是的,回到你的主项目中,你会添加一个引用你的新包装PwrUSB.dll在项目菜单中。然后在代码中,你会使用这样的事情:
Dim numOfDevices as Long
Dim firmware() As Byte
Redim firmware(0 to 31)
numOfDevices = PwrUSB.InitPowerDevice(firmware)
祝你好运。
Bob的答案中非常重要的一点是,它“突然”起作用,因为您将包装器编译为本地代码。然后,从主程序引用该包装器DLL,并且可以正常开发和调试。 – prprcupofcoffee
您肯定无法使用typelib来解决您的cdecl问题。 – wqw