[英]How to call a native C DLL from vb6
好的,所以:我必須在vb中創建一個.exe。 該.exe必須調用vb dll,而該vb dll必須調用本地C dll(仍在:()上工作。
真正的問題是:我有一個C dll,正在嘗試從.exe調用它,以便我可以了解它如何繼續運行。 問題是:每次我嘗試調用它時,都會出現“錯誤53:找不到文件”。 但! 如果我指向同一位置的另一個DLL(一個更簡單的DLL,沒有任何外部包含和擴展名),它將起作用。
為什么? 除了dll本身,我還必須在VB項目中包含其他內容嗎?
@ Edit1
我已經用C創建了一個調用該DLL的測試程序,並且工作正常。
我設法進行了一些更改,現在我有另一個問題,這很重要。 :(
我現在可以正常調用DLL。 問題是:我創建了一個VB6 exe文件,該文件在C語言中調用DLL。在C語言中我必須調用的函數名為“ FindPIN”。 就是說,功能FindPIN使用CreateFile打開一個COM端口。 想法是:
(在VB6中)調用FindPIN->(在C DLL中)FindPIN調用CreateFile並從該端口保存句柄->返回代碼(如<0,表示錯誤,yada yada)。
當我調用FindPIN時,它可以工作,但始終返回-1。 功能:
hSerialComm = Createfile (...);
if (hSerialComm == INVALID_HANDLE_VALUE)
return -1;
這意味着它無法打開COM端口! :(
但是,如果我嘗試運行C exe,例如:
(在C.exe中)調用FindPIN->(在C DLL中)FindPIN調用CreateFile並從該端口保存該句柄->返回代碼(例如<0表示錯誤,yada yada)。
它工作正常,並且COM端口打開了! :(
除了函數的commom聲明外,我還需要在VB6中做些什么? 我正常地做,就像
Private Declare Function FindPIN Lib "pin.dll" () As Integer
:( 請幫我!!
請發布您的dll的FindPin
函數的C聲明。 我猜你的函數不會返回short
而是返回int
,是真的嗎?
然后,您必須聲明VB中“ As Long”而不是“ As Integer”中函數的返回值,因為
Integer = short = Int16
和Long = int = Int32
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.