2011-03-02 42 views
0

我在VC++ Express 2010中創建了兩個項目,一個是DLLTest,另一個是CODETest。如何使用從C++中的DLL導出的函數?

DLLTest,聲明和定義一個函數func()如下:

__declspec(dllexport) void func() {...}; 

構建DLLTest項目成功,DLLTest.dll和DLLTest.lib文件創建。

CODETest,我想使用導出的函數,如下所示:

#include "DLLTest.h" 
int main() 
{ 
    ... 
    func(); 
    ... 
    return 0; 
} 

錯誤發生時生成CODETest項目--->「解析外部符號 」空隙__cdecl letterList(無效)「,當我添加DLLTest.lib到CODETest項目的目錄,成功打造過程。

我不知道爲什麼?感謝您的幫助。

+0

你剛剛回答了你自己的問題:你必須包含你想要使用的DLL函數的'lib'文件。 – 2011-03-02 11:30:58

+0

是的,雖然問題解決了,但我不知道爲什麼?添加lib文件時爲什麼要成功構建。 – Jason 2011-03-02 11:37:41

回答

2

這似乎不太可能,尤其是「func」轉換爲「letterList」的部分。不過,你必須告訴鏈接器鏈接DLL的導入庫,以便它可以解析從該DLL導入的標識符。在MSVC中最簡單的方法是:

#include "DLLTest.h" 
#pragma comment(lib, "dlltest.lib") 

in CodeTest.cpp。 #pragma與鏈接器的Additional Dependencies設置完成相同的功能。

+0

'#pragma comment(lib,「dlltest.lib」)'告訴鏈接器鏈接DLL的導入庫? – Jason 2011-03-02 11:52:56