2012-09-23 26 views
0

我有一些問題試圖編譯一個DLL,但我無法看到這個鏈接錯誤來自哪裏。LNK2019針對CArray添加,GetAt,GetSize,包括所有包括

我LNK2019是:

Exports.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: int 
__thiscall CArray<struct HWND__ *,struct HWND__ *>::Add(struct HWND__ *)" ([email protected]? 
[email protected][email protected]@[email protected]@@[email protected]@@Z) referenced in function "int __stdcall _Disable(struct 
HWND__ *,long)" ([email protected]@[email protected]@[email protected]) 

禁用(...)是...

static BOOL CALLBACK _Disable(HWND hwnd, LPARAM lParam) 
{ 
    CArray<HWND, HWND>* pArr = (CHWndArray*)lParam; 
    if(::IsWindowEnabled(hwnd) && ::IsWindowVisible(hwnd)) 
    { 
    pArr->Add(hwnd); 
    ::Enable(hwnd, FALSE); 
    } 
} 

這是Exports.cpp第一功能;正好在它上面是

#include <afxtempl.h> 

我有Windows 7.1 SDK安裝(並試圖重新安裝這兩個和VS2010)。完全相同的項目在其他機器上編譯完美,所以它不能是代碼本身..我花了無數的錯誤研究,這導致了在解決方案文件中更改隨機值的絕望嘗試,包括不同的Windows頭文件,等等。我最後的手段是完全重新安裝操作系統(假設它實際上是Windows SDK不正確的問題)。

任何建議都將是一個巨大的幫助。

編輯: 我已經添加了/ showIncludes上的cpp給出的問題,我看到afxtempl.h被包括在內。它被包括由於其它頭,包括它多次,但它的存在(每一次它是從同一目錄):

1> Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include\afxtempl.h 
+0

順便說一句,'_Disable'違反了保留標識符的規則,因爲它以'_ '開頭。請參閱[這裏](http://stackoverflow.com/questions/228783/what-are-the-rules-about-using-an-underscore-in-a-c-identifier)。 – chris

+0

奇怪 - 我會在構建中拋出一個/ showIncludes來查看標題來自哪裏。也許看看'/ E'選項產生的東西。它看起來像是搞砸了AFX_INLINE宏。構建日誌中是否有'/ DAFX_INLINE = something'? –

+0

@MichaelBurr我可以看到沒有DAFX_INLINE。我爲.cpp添加了一個/ showIncludes現在給我帶來麻煩,我會在完成後更新問題。 – giraffee

回答

0

只是爲了回答這個問題的緣故 - 我最終重新檢查從我們的SVN中抽出一切,重新編譯一切。我認爲我們的一個項目無論出於何種原因都在搞砸。