簡體   English   中英

如何從另一個C ++ win32控制台應用程序調用C ++ Win32 DLL

[英]How Can I call a C++ Win32 DLL from another C++ win32 Console Application

我主要擔心的是,我能夠使用VC ++編寫C ++ DLL。 現在,dll出現在Debug文件夾中。

如何在其他C ++控制台應用程序中使用我的DLL。 如何添加引用或將DLL鏈接到應用程序。

另一點,在創建DLL時,VC ++向導為我提供了以下選項:

  1. 一個空的DLL項目
  2. 一個簡單的DLL項目
  3. 導出某些符號的DLL

現在根據CP的文章,我使用了第3個選項。 由於MFC應用程序使用了dll,因此無法跟進,有些人在這個時間點進展不多

我是否需要始終選擇第三種選擇? 另外兩個選項意味着什么?

不完全確定你的問題但是:

你使用它的選項並不重要,這只是向導為你做的事情; 如果您使用第三個選項,則向導會在頭文件中創建一個如下所示的位:

#ifdef TEST_EXPORTS
#define TEST_API __declspec(dllexport)
#else
#define TEST_API __declspec(dllimport)
#endif

這種方式的工作方式是在DLL項目中,TEST_EXPORTS在編譯器選項中定義,因此TEST_API求值為dllexport,從而告訴鏈接器導出這些符號。 如果在另一個項目中包含此標頭,則將TEST_API定義為dllimport,它告訴編譯器在DLL中的運行時鏈接到它。 這種導出符號的#define方法被廣泛使用且易於閱讀。

為了在DLL中調用函數/類,您需要以下兩種方式之一導出符號:a)使用__declspec(dllexport)[這幾乎在所有情況下都是更方便的選項]或者b)使用.DEF文件在你的項目中

還想提一下,您需要在解決方案中包含.exe文件的DLL項目或DLL編譯生成的.lib。

您可以使用“導出某些符號的DLL”來了解如何構建Dll項目。 理解了這一點后,請使用“A Simple DLL project”。 您可以選擇始終使用“導出某些符號的DLL”,並更改向導生成的代碼,將示例導出的類/函數/符號替換為您自己的代碼。

要從客戶端項目引用.Dll項目,請將.lib文件添加到客戶端項目鏈接器依賴項:項目 - 屬性 - 鏈接器 - 輸入 - 其他依賴項。 要確保鏈接器可以找到.lib文件,請將放置.lib文件的目錄添加到鏈接器目錄列表中。 有兩個地方可以完成:在客戶端項目中本地(項目 - 屬性 - 鏈接器 - 常規 - 附加庫目錄)和全局,用於所有VC ++項目(工具 - 選項 - VC ++目錄 - 庫)。

最后一件事是確保客戶端.exe可以在運行時加載DLL。 Dll必須位於當前目錄,可執行目錄,Windows,系統目錄中,或通過PATH變量可用。

可以通過在Alex Studio中描述的Visual Studio中控制台應用程序的項目設置中將其指定為依賴項來導入DLL。 您必須通過將DLL放在指定PATH變量的任何位置來確保應用程序能夠找到DLL。 您還可以使用LoadLibrary方法在您的應用程序中以編程方式加載DLL(請參閱此處的文檔http://msdn.microsoft.com/en-us/library/ms684175(VS.85).aspx )並調用DLL中導出的方法使用函數GetProcAddress(參見http://msdn.microsoft.com/en-us/library/ms683212(VS.85).aspx )。

完成以下步驟以設置兩個項目。 http://msdn.microsoft.com/en-us/library/ms235636.aspx

在這些說明中,新項目將添加到包含DLL的同一解決方案中。 在大多數情況下可能不是這種情況。 如果您要處理兩個單獨的項目,請稍后更改上述過程,如下所示。

  1. 在DLL項目中,確保已配置為創建DLL文件。 為此,請單擊解決方案資源管理器中的項目,然后轉到屬性。 在Configuration Properties >> General下,將Configuration Type更改為“Dynamic Library(.dll)”。 現在,通過在菜單欄上選擇Build,Build Solution來編譯動態鏈接庫。

  2. 創建鏈接中提到的其他項目和文件。 要在應用程序中使用dll,您必須引用它。 為此,請添加從動態庫創建的lib文件。 lib文件創建在與dll相同的文件夾中。 如果Visual Studio在調試模式下使用,它將在Project >> Folder >> Debug中。 如果使用了發布模式,則項目文件夾>>發布。 要在應用程序中使用lib文件,請轉到項目>>屬性>>鏈接器>>輸入>>附加依賴項,並將lib文件的名稱添加到列表中(在我的示例中為“AFR24x7.lib”)。

  3. 要確保鏈接器可以找到.lib文件,請將放置.lib文件的目錄添加到鏈接器目錄列表中。 有兩個地方可以完成:客戶端項目中的本地(項目>>屬性>>鏈接器>>常規>>附加庫目錄)和全局,適用於所有VC ++項目(工具>>選項>> VC ++目錄>>庫)。

  4. 添加鏈接中提到的包含文件。

  5. 復制創建的DLL文件並將其粘貼到應用程序的發行版和調試文件夾中(如果您同時使用它們)。

  6. 除了設置鏈接中給出的依賴項外,完成其余步驟。

希望這會有所幫助。

暫無
暫無

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

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