2013-10-03 101 views
1

我一步步跟着如何在這個link 中的Visual Studio解決方案中包含DLL項目當我做了測試以檢查dll函數是否與應用程序鏈接良好時,它承認它。但?我現在有一個錯誤,看起來像下面這樣:將DLL鏈接到應用程序時出現未知錯誤

PS:init_test()是一個Dll函數 APP是應用程序和它的一個函數(image(void)),我包括DLL:init_test )

Error 4 error LNK2019: unresolved external symbol "public: static void __cdecl DLL::init_test(unsigned long)" ([email protected]@@[email protected]) referenced in function "public: void __thiscall APP::image(void)" ([email protected]@@QAEXXZ) C:\Users\xxx\apps\APP\APP.obj 
Error 5 error LNK1120: 1 unresolved externals C:\Users\xxx\APP.exe 

讓我試着來代表我所做的:

#ifdef DLL_EXPORTS 
#define DLL_API __declspec(dllexport) 
#else 
#define DLL_API __declspec(dllimport) 
#endif 

class DLL 
{ 
public: 
static void image_test(); 
}; 


void APP:image() 
{ 
.... 
.... 
DLL::image_test(); 
} 
+0

你需要提供更多的信息,爲你找到問題即顯示你到底做了什麼。錯誤仍然意味着你的主要是無法找到鏈接時的函數的定義 – fayyazkl

+0

http://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved-external-symbol-error-and how-do-i-fix – stijn

+0

@fayyazkl請參閱我的編輯。現在應該更清楚了。 – MelMed

回答

1

變化

class DLL 
{ 
public: 
static void image_test(); 
}; 

class DLL_API DLL 
{ 
public: 
static void image_test(); 
}; 

使image_test()將用於出口,你會除了你的DLL得到一個導入庫。這應該有助於解決關於同一主題的一些其他問題。

還記得這個工作DLL_EXPORTS必須在您的.dll中定義只所以把它添加到您的C/C++ /預處理器/預處理定義所有配置中,您的DLL(調試,發佈,RelWithDebInfo ...)

相關問題