2013-10-02 55 views
0

我有一些測試代碼:LNK2019無法解析的外部

foo.h中

#ifndef FOO_H 
#define FOO_H 

void Foo(int iBar); 

#endif FOO_H 

Foo.cpp中

#include "foo.h" 

void Foo(int iBar) 
{ 
    // Do nothing... 
} 

的main.cpp

#include "foo.h" 

int main() 
{ 
    Foo(1); 

    return 0; 
} 

當我在VS2010建上面的代碼我得到一個鏈接錯誤:

error LNK2019: unresolved external symbol "void __cdecl Foo(int)" ([email protected]@[email protected]) referenced in function _main

我想不通,爲什麼我的Foo()函數將在鏈接時沒有解決。任何人都可以告訴我一些關於我可能會做錯什麼的見解嗎?

+3

您是否將foo.obj鏈接到了exe文件中? – OldProgrammer

+0

你如何建立? – n0rd

+0

@ n0rd:我使用VS2010,所以當我打開我的解決方案時,在菜單中單擊_Build-> Build Solution_。解決方案中的每個項目都有各種設置,可以在構建路徑,依賴聲明等方面進行更改。我還沒有將構建設置更改爲超出我希望生成可執行文件的位置。 – BlazeCell

回答

0

因此,經過一些試驗和錯誤,我通過將定義代碼從foo.cpp移動到foo.h來成功構建代碼。

無論出於何種原因,似乎foo.cpp沒有被綁定到foo.obj中。我在log.h和log.cpp中分別聲明和定義了全局日誌實用程序函數,就像我在上面測試'foo'文件時那樣,但是我沒有任何問題編譯並將它們鏈接到我的程序。我不知道我在做什麼,有一個沒有問題的鏈接,而另一個不識別cpp文件。

相關問題