2010-03-19 141 views
1

解決方案中有兩個WIN32 DLL項目,main.dll應該調用mgn.dll中的函數。無法解析的外部符號

mgn.dll具有mgn.h頭文件:

#ifdef MGN_EXPORTS 
#define MGN_API __declspec(dllexport) 
#else 
#define MGN_API __declspec(dllimport) 
#endif 

extern "C" bool MGN_API AttachMGN(void); 

和mgn.cpp源文件:

#include "stdafx.h" 
#include "mgn.h" 

MGN_API bool AttachMGN(void) 
{ 
... 
} 

main.dll從源文件中的一個調用AttachMGN功能:

#include "stdafx.h" 
#include "..\mgn\mgn.h" 

bool CreateClient() 
{ 
    return ::AttachMGN(); 
} 

mgn.dll編譯成功。 main.dll在VS文本編輯器中不顯示任何錯誤,我可以使用「轉到定義」功能進行導航。但是生成過程中我得到的錯誤:

錯誤LNK2019:解析外部符號__imp__AttachMGN在函數引用「布爾__cdecl CreateClient(無效)」(?CreateClient @@ AW4XZ)

兩個DLL文件編譯成同一個文件夾。 DependencyWalker將導出的AttachMGN函數顯示出來。主要項目對Mgn項目具有相關性,如果這很重要的話。

我相信我只是忽略了一些東西....

在此先感謝。

回答

1

您可能只是忘了將MGN.lib添加到main.dll的鏈接參數中

+0

如何從VS環境做到這一點? :8對不起,這是我第一個win32項目。 – drumsta 2010-03-19 23:33:15

+0

剛剛檢查並且main.dll在「鏈接器」 - >「輸入」部分的「附加依賴項」字段中的值爲%(AdditionalDependencies)。並且main.dll有一個依賴項設置爲mgn.dll – drumsta 2010-03-19 23:42:17

+2

添加mgn作爲對main的引用,它與您用於將其設置爲依賴項的菜單相同。 – 2010-03-19 23:46:46

0

您的mgn.libmain連接?通過它的聲音,看起來好像main找不到要鏈接到DLL的lib文件。