我其實認爲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