我的C語言編寫的函數的靜態庫比方說,頭文件被稱爲myHeader.h,看起來像:引用C函數從C++
#ifndef MYHEADER_H
#define MYHEADER_H
void function1();
void function2();
#endif
功能1和功能2有沒有什麼太特殊了。比方說,他們在一個名爲impl1.c它看起來像存在:
#include "myHeader.h"
void function1() {
// code
}
void function2() {
// more code
}
所有到目前爲止提到的代碼被編譯成一些所謂libmylib.a添加靜態庫。我寧願不修改任何用於構建這個庫的代碼。我也有一個C++頭(cppHeader.h)看起來像:
#ifndef CPPHEADER_H
#define CPPHEADER_H
class CppClass {
private:
double attr1;
public:
void function3();
};
#endif
然後cppHeader.cpp樣子:
#include "cppHeader.h"
#include "myHeader.h"
// constructor
CppClass::CppClass(){}
void CppClass::function3() {
function1();
}
當我嘗試編譯此,我得到一個未定義的錯誤對function1()的引用。我相信在編譯時我已經正確地鏈接了所有東西。我在C++中很生疏。我確信我只是在做一些愚蠢的事情。我希望我的簡單示例代碼足以說明問題。
在此先感謝您的幫助!
不能說'C++東西',但是'C'你可能想使你的函數聲明適當的原型......只需指定'void'的參數爲:'無效的樂趣ction1(無效);' – pmg 2011-03-13 20:57:12
@pmg - 我認爲沒有自1989年以來 「要求」! – Flexo 2011-03-13 21:00:37
http://www.parashift.com/c++-faq-lite/mixing-c-and-cpp.html – Flexo 2011-03-13 21:03:12