2010-06-09 60 views
1

如何使用DLL中的函數?我是一個總新手,我真的不知道如何使用DLL文件中的函數。我正在嘗試使用MS Visual Studio 2008(C++)。如何使用DLL中的函數?

我的理解是,DLL文件將有相應的頭文件,只要我包含頭文件並在我的代碼中正常調用函數,它應該工作?那是對的嗎?那麼我只需要編譯的exe文件能夠找到DLL?

請讓我知道,如果這是一個遠程正確的理解!

謝謝!

羅素

+1

看一看這個計算器問題:(http://stackoverflow.com/questions/539358/calling-functions-in-a- [從C++調用函數在一個DLL] dll-from-c) – 2010-06-09 03:59:47

回答

3

要重新使用在DLL中聲明的函數你有兩個選擇:

第一個(且優選的)是包括相應的報頭文件中聲明你想使用的功能,然後鏈接到相對應的。庫。這第二步似乎是靜態連接到函數,但實際上最終是一個存根調用,當相應的DLL中包含的第一個函數被調用時,它將加載DLL到內存。例如,要使用CreateWindowEx函數,請包含「WinUser.h」標題並鏈接到「User32.lib」庫。

第二個選項是手動加載庫。爲此,您可以調用LoadLibrary函數來獲取DLL的句柄,從而獲得所需的函數,然後使用GetProcAddress獲取指向該函數的指針。返回的指針需要轉換爲適當的類型,然後你可以將它用作任何常規函數指針。只有在您無權訪問實現者的頭文件和庫時,才推薦使用此選項,因爲在函數聲明中存在使用不正確參數或調用約定不匹配的風險。

PS - 我正在簡化一點,但這是過程如何工作的核心。

0

一個非常簡單的谷歌搜索返回給你的答案。

http://www.google.com/search?hl=en&site=&q=How+do+I+use+functions+from+a+DLL+in+Visual+Studio&btnG=Search

首先鏈接,讀了幾節,並「從Visual Basic應用程序中調用DLL函數」 http://msdn.microsoft.com/en-us/library/dt232c9t.aspx

+0

不錯的嘗試,但我認爲這不太適合這個問題。 – 2010-06-09 04:00:29

+2

您是否注意到他在詢問C++並且該鏈接適用於Visual Basic? – 2010-06-09 04:01:47

+0

哦,多數民衆贊成我再次有點自大,對不起,我誤將文章鏈接:( – RobertPitt 2010-06-09 04:04:00

0

你在正確的軌道上,但缺少一個重要的步驟來翻過。

爲了使用DLL,還需要鏈接它的導入庫。您可以通過在鏈接器/輸入/附加依賴項下指定導入庫的名稱來完成此操作。

0

有很多方法可以將DLL鏈接到您的C++應用程序!

  1. DLL包含頭文件和庫文件(包含鏈接信息)到你的項目和 調用DLL功能正常功能。缺點是應用程序會在啓動時加載DLL,如果未在%path%或base目錄中找到它,則會引發異常。

  2. 使用LoadLibrary API和GetProcAddress API方法來加載庫。這樣,您需要在LoadLibrary中傳遞DLL路徑,如果加載成功,您可以使用函數指針訪問您需要調用的函數。讀詳細示例here