2012-11-30 123 views
2

我在我的C++解決方案(VS2012)中有一個LNK2019。我有以下幾點:無法解析的外部符號錯誤鏈接DLL到LIB

  • class Matrix {...}
  • DLL中的靜態的.lib這將消耗該.LIB。我已經在gui中設置了一個項目引用,我可以看到鏈接器下的'Command Line'屬性頁面上列出了.lib。

我把下面簡單的代碼一起

void Test() 
{ 
    Matrix m(10,10); 
    int z = m.Rows(); 
} 

這產生LNK2019找public: int __thiscall Common::Matrix::Rows(void) ...

我不明白的是爲什麼會出現鏈接錯誤:據我所見,我已經添加了.lib引用,並設置了所需的所有標頭等,但它只是不會鏈接。我錯過了什麼?

+0

我不知道,但也許'dllimport'? –

+0

你能多顯一點嗎?例如。你的頭文件中有什麼,以及在Matrix類中如何定義Rows()函數?我想我知道答案,但我需要檢查你現在在做什麼。最常見的問題在MSDN文檔中解決:http://msdn.microsoft.com/en-us/library/799kze2z%28v=vs.110%29.aspx – Tawnos

+0

@Tawnos:我注意到看着我的(舊)代碼對於Matrix.cpp,我有一些內聯修飾符 - 查看您的鏈接似乎是問題。你想添加一個響應,所以我可以標記它......謝謝! –

回答

0
+1

我的確切問題我認爲與以下短語有關:'類似地,使用函數內聯的項目尚未定義.cpp文件中的函數而不是頭文件中的函數也將獲得LNK2019。頭文件包含在任何地方都被認爲是合適的,但是隻有當.cpp文件通過編譯器時纔會內聯函數。因此,在其他模塊中使用時,鏈接器將這些函數視爲未解析的外部函數。 –

相關問題