如何使用DLL中的函數?我是一個總新手,我真的不知道如何使用DLL文件中的函數。我正在嘗試使用MS Visual Studio 2008(C++)。如何使用DLL中的函數?
我的理解是,DLL文件將有相應的頭文件,只要我包含頭文件並在我的代碼中正常調用函數,它應該工作?那是對的嗎?那麼我只需要編譯的exe文件能夠找到DLL?
請讓我知道,如果這是一個遠程正確的理解!
謝謝!
羅素
如何使用DLL中的函數?我是一個總新手,我真的不知道如何使用DLL文件中的函數。我正在嘗試使用MS Visual Studio 2008(C++)。如何使用DLL中的函數?
我的理解是,DLL文件將有相應的頭文件,只要我包含頭文件並在我的代碼中正常調用函數,它應該工作?那是對的嗎?那麼我只需要編譯的exe文件能夠找到DLL?
請讓我知道,如果這是一個遠程正確的理解!
謝謝!
羅素
要重新使用在DLL中聲明的函數你有兩個選擇:
第一個(且優選的)是包括相應的報頭文件中聲明你想使用的功能,然後鏈接到相對應的。庫。這第二步似乎是靜態連接到函數,但實際上最終是一個存根調用,當相應的DLL中包含的第一個函數被調用時,它將加載DLL到內存。例如,要使用CreateWindowEx函數,請包含「WinUser.h」標題並鏈接到「User32.lib」庫。
第二個選項是手動加載庫。爲此,您可以調用LoadLibrary函數來獲取DLL的句柄,從而獲得所需的函數,然後使用GetProcAddress獲取指向該函數的指針。返回的指針需要轉換爲適當的類型,然後你可以將它用作任何常規函數指針。只有在您無權訪問實現者的頭文件和庫時,才推薦使用此選項,因爲在函數聲明中存在使用不正確參數或調用約定不匹配的風險。
PS - 我正在簡化一點,但這是過程如何工作的核心。
一個非常簡單的谷歌搜索返回給你的答案。
首先鏈接,讀了幾節,並「從Visual Basic應用程序中調用DLL函數」 http://msdn.microsoft.com/en-us/library/dt232c9t.aspx
不錯的嘗試,但我認爲這不太適合這個問題。 – 2010-06-09 04:00:29
您是否注意到他在詢問C++並且該鏈接適用於Visual Basic? – 2010-06-09 04:01:47
哦,多數民衆贊成我再次有點自大,對不起,我誤將文章鏈接:( – RobertPitt 2010-06-09 04:04:00
你在正確的軌道上,但缺少一個重要的步驟來翻過。
爲了使用DLL,還需要鏈接它的導入庫。您可以通過在鏈接器/輸入/附加依賴項下指定導入庫的名稱來完成此操作。
有很多方法可以將DLL鏈接到您的C++應用程序!
DLL包含頭文件和庫文件(包含鏈接信息)到你的項目和 調用DLL功能正常功能。缺點是應用程序會在啓動時加載DLL,如果未在%path%或base目錄中找到它,則會引發異常。
使用LoadLibrary API和GetProcAddress API方法來加載庫。這樣,您需要在LoadLibrary中傳遞DLL路徑,如果加載成功,您可以使用函數指針訪問您需要調用的函數。讀詳細示例here
看一看這個計算器問題:(http://stackoverflow.com/questions/539358/calling-functions-in-a- [從C++調用函數在一個DLL] dll-from-c) – 2010-06-09 03:59:47