2011-08-14 31 views
0

我有3個文件:託管C++代碼沒有找到函數實現

  1. 主 「.h」 頭文件 - 包括實現一個簡單的WinForm(託管C++)
  2. 倍/ file.h
  3. 摺疊/ file.cpp

(file.h和file.cpp並不代表一類)

我有一個函數 「FUNC()」,其它的declar ation在fold/file.h中,其實現在fold/file.cpp中。

有包括當我打電話FUNC()從main.h我得到的錯誤,在main.h

「摺疊/ file.h」:「未解決令牌」和「未解決的外部錯誤」。當我在fold/file.h中放入「func()」時,沒有錯誤。

什麼問題?

謝謝!

+1

聽起來像一個鏈接器錯誤,而不是編譯器錯誤。你鏈接了所有的目標文件嗎?另外,在2003年沒有「Managed C++」與魚類去睡覺嗎? –

+0

你會在這裏發佈你的代碼嗎?我相信它會解釋更好 –

+0

@Kerrek:我對你的託管C++評論感到困惑,所以我查了一下。看起來「Managed C++」已被棄用,但「C++/CLI」不是。 http://en.wikipedia.org/wiki/C%2B%2B/CLI –

回答

1

當我在fold/file.h中執行「func()」時沒有錯誤。

你正在編譯所有的源文件嗎?我懷疑你不是因爲當你將定義放到頭文件中並將其包含在主源文件中時,預處理器實際上將它複製到主源文件中。因此,編譯和鏈接主翻譯單元時,編譯器和鏈接器可以分別查看聲明和定義。

+0

我生成的項目,並在Visual Studio 2010中運行它,所以我不認爲這個問題在編譯 – DudiD

+0

@DudiD - 你得到的錯誤是一個鏈接錯誤。不是編譯器錯誤。鏈接器無法找到'func()'的定義。 – Mahesh

+0

我該如何解決鏈接問題? (在Visual Studio 2010中) – DudiD

相關問題