───────────────────────────────────────
※ 引述《xiaudai.bbs@bbs.cis.nctu.edu.tw (小呆)》之銘言: > 以下例子, 我用C++編譯器編譯a.h和a.cpp, 產生一個 a.lib > 然後我在 b.c 裡引用 a.h 並呼叫 func1() > 可是編譯 b.c 時, linker 產生一個錯誤, 它無法找到 func1() > 我的開發環境是 Visual Studio 2005, 我確定linker 的設定中, > 我有把 a.lib加進去 > 我在a.h裡把 "void func1();" 改成 "extern "C" void func1()" > 也無作用 > 請問各位該如何解決這個問題? 感謝 > a.h > ===== > extern "C" void func1(); > a.cpp > ===== #include "a.h"
> void func1() { > }
如果你的 a.cpp 沒有 #include "a.h", 這樣 compiler 並不知道 func1() 應該用 C 的 convention, 除非你在 a.cpp 也加上 extern "C"。
> b.c > ====== > #include "a.h" > void func2() { > func1(); // 這邊你少了分號 > }
如果還是不行就是你的編譯環境還需要插什麼到 code 裡了。
--
|
沒有留言:
張貼留言