c++程式調用c函數 and otherwise zz

來源:互聯網
上載者:User

c++程式調用c函數

a.c
a.h
b.cpp

b包含a.h得到了a中函數的原型,a.c獨立編譯成.o檔案
但是連結的時候 b中調用a.c中的函數老是 undefined reference

1.  b檔案中
extern "C"
{
 #include "a.h"
}

2.   我在a.h中用了這樣的結構
#ifdef __cplusplus
extern "C" {
#endif

//簡單的log
extern bool log_init(const char *filename);
extern void log_it(const char *fmt,...);

#ifdef __cplusplus
}
#endif

C調用C++ 寫的lib.so(a)

例如有一個c++的庫, foo.a(so)
裡面有幾個函數
int add(int a, int b);
int plus(int a, int b);

首先你要寫一個c++的外包
也就是
wapper.cpp
extern int add(int a, int b);
extern int plus(int a, int b);
extern "C"
{
int add_wapper(int a, int b)
{
    add(a, b);
}
int plus_wapper(int a, int b);
{
    plus(a, b);
}
}

然後你的c就可以調用add_wapper和plus_wapper了
foo.c
void func()
{
    add_wapper(1, 2);
    plus_wapper(2, 3);
}

gcc foo.c wapper.cpp foo.a

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.