2007年8月5日 星期日

-=新綠園=- 閱讀看板文章

-=新綠園=- 閱讀看板文章
作者 tinlans.bbs@whshs.cs.nccu.edu.tw (汀) 看板 CompLanguage
標題 Re: 請問.c檔裡可否使用用C++編譯成的程式庫.
時間 政大狂狷年少 (2007/08/01 Wed 20:44:52)

───────────────────────────────────────

※ 引述《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 裡了。

--

沒有留言: