在VS工程里編譯dll / 調用外部dll


這個問題昨天請教了一下大神,記錄之。

1.編譯dll

創建一個新項目,Win32控制台應用程序,這里選DLL。這樣的話編譯過后會自動在Debug目錄下生成dll文件。

這樣,會生成如下的目錄:

其中頭文件里的第2、3個是自動生成的,源文件里的1、3個是自動生成的。

我們只需要改動:

  在DllWithClass.h里寫:

extern "C" _declspec(dllexport)//導出
float FunctionMultiply(float x, float y);

  這里第一行是用於DLL導出的,第二行是你所定義的功能函數的聲明

  在DllWithClass.cpp里寫:

extern "C" _declspec(dllexport) float FunctionMultiply(float x, float y) { return x*y; }

  第一行對應.h里面的,注意不要打分號。然后就是定義函數體了。

  這樣編譯就會生成一個實現簡單乘法的dll文件。

 

2.調用dll

建立一個Win32控制台應用程序,這里是為了生成.exe

調用dll有三步所需要做的事情:

1>代碼部分,這里面只需要改動UseDllWithClass.cpp文件

添加如下代碼:

#include "..\DllWithClass\DllWithClass.h"

int _tmain(int argc, _TCHAR* argv[]) { float FunctionResult = FunctionMultiply(1.2f, 5.0f); printf("%f", FunctionResult); getchar(); return 0; }

其中對於被調用.dll文件的頭文件的引用,使用了相對路徑。這里有個小知識:由於. vcxproj這個文件的內容代表着.exe文件所在的目錄

  ..\表示着返回上一目錄,所以這個查找的順序是:從.exe返回上一級目錄,再打開\DllWithClass目錄,找到DllWithClass.h

為了方便,也可以直接把.dll文件放在.exe所在目錄下,這樣就可以直接#include "DllWithClass.h"

2>打開項目屬性-鏈接器-常規

附加庫目錄里加上.lib文件所在的目錄,同樣可以使用相對路徑:

如果.lib文件直接放在.exe文件目錄下,這里可以不用設置(所以最方便的方式還是把.h/.lib/.dll全放在.exe文件的目錄下)

3>打開項目屬性-鏈接器-輸入

附加依賴項里加上.lib文件名

 

 

完成這些設置,就可以直接調用封裝在.dll文件里的函數了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM