Re: [問題] 如果手上有一堆.dll,也知道function的ꬠ…
※ 引述《maxi326 (不想再留白)》之銘言:
: 對dll認識不多
: 在用vc6寫程式
: 從網路上下載到一些dll
: 他說可以應用在自己寫的vc程式上
: 有個說明檔但都只有簡單的宣告
: eg.VARIANT_BOOL Connect_Net([in] BSTR IPAdd, [in] LONG Port)
: 我知這是vb的宣告方式
vb ??
那宣告看來應該還是比較像 C 吧
只是那個 [in] 應該是為了說明,表示是要傳入資訊的參數
(不過 VARIANT_BOOL 和 BSTR 也是 COM programming 常用的資料型態就是了)
: 但他應該是win32 api一樣大家都通用
這個就不是稱作 win32 API 了
這只是別人寫的 DLL 所 export 出來的函式
: 那些dll都經compile過,沒辦法看
: 我要怎樣才可以用到這些function呢?
: 是這樣用嗎?
: extern "C" __declspec(dllimport) Connect_Net(BSTR IPAdd, LONG Port);
: 但build的時候會有問題
: conn.obj : error LNK2001: unresolved external symbol __imp__Connect_Net
: Debug/try_zk_conn.exe : fatal error LNK1120: 1 unresolved externals
你說沒 .lib 檔案,那用這樣 import 方式就不行了
有裝 VC 的話找一下它的安裝目錄,有個 dumpbin.exe 的命令列工具
找到之後執行 "dumpbin dll檔案名稱 /exports"
看一下實際上 Connect_Net 被 DLL 所匯出 (export) 的名稱到底是什麼
有了確切的名稱之後
就用 LoadLibrary 在執行時動態載入 DLL 檔案
然後 GetProcAddress 取出函式位址,存到一個函式指標
之後就用該函式指標來呼叫那功能..
順便要注意那個函式是 __cdecl 還是 __stdcall,找一下文件
(我是猜後者機率較大啦..)
有時候從 DLL 的函式匯出名稱也看得出來
你先用 dumpbin 看一下吧
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.228.210.68
推
09/05 17:53, , 1F
09/05 17:53, 1F
→
09/05 17:54, , 2F
09/05 17:54, 2F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章