簡體   English   中英

如何從vb6調用本機C DLL

[英]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 = Int16Long = int = Int32

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM