2013-07-24 60 views
0

平臺LNK2019解決的符號,即使已存在聯動

的Visual Studio 2010專業舞臺

我的問題

我有一個解決方案叫做解決方案答:我有項目, 'A'(靜態包含內部和外部頭文件和源文件的庫)和'b'(可執行文件以查看是否可以使用'a'功能)。

我打算用靜態庫在其他可執行項目「C」,這是在不同解決 C.我做了什麼「一」功能如下:

1)增加了靜態庫文件夾(相對路徑)到包括目錄部分在我的'c'項目屬性(包括調試和發佈配置)。

2)檢查intellisense messenger,看看進口是否成功。

在我構建解決方案C之前,一切都很好。然而,一旦我建立它彈出LNK2019錯誤,因爲有一個功能foo()似乎沒有得到解決。該(報告的)函數簽名是:

extern void foo(params); 
extern void bar(void); 

只是提醒讀者,foo(params)功能在靜態庫 'A' 的解決方案A.

我得到的錯誤信息是:

error LNK2001: unresolved external symbol _foo 
error LNK2001: unresolved external symbol _bar 

MY digagnosis到目前爲止

明顯的診斷將是:

1)報告的函數簽名似乎與我的信號不匹配(我在Visual Studio中使用真人查找和替換工具進行了檢查;沒有不匹配)。

2)檢查是否有包含阻擋它的警衛(我再次檢查過,但沒有任何問題會導致此問題)。

我需要提及的一件事就是exec。解決方案'C'中的項目b可以很容易地在靜態庫a中使用foobar。這可能是因爲他們在相同的解決方案,並通過簡單地添加項目目錄包括目錄在項目b屬性將完成這項工作。但是,當我嘗試在不同的解決方案中使用它時,它正在崩潰。我做了一個完整的清理和重建解決方案,但沒有運氣。

我開始認爲它無法在相同的頭文件中找到定義並且感到困惑。儘管定義位於同名源文件中,但它仍可能會產生混淆。

我很努力地找到沒有完全修改的解決方案。有誰知道該怎麼辦?

回答

0

我想我通過右鍵單擊我正在使用的可執行項目上的「添加引用」來解決了這個問題。但是,我仍然需要手動將靜態庫項目'a'導入到外部解決方案C中,以便可以進行引用。

我知道這不太可能是一種很好的做事方式,但它絕對安全,而且我非常肯定它會以某種方式發揮作用。

相關問題