您的位置:首页 > 编程语言 > C语言/C++

C++调用C生成的动态库

2014-08-29 10:00 148 查看
看下面这个例子,其中add函数是用c编写的代码,而主函数是用c++编写的代码,将c代码编译成动态库,然后用c++调用。

add.h

#ifndef ADD_FILE_HEADER_INC

#define ADD_FILE_HEADER_INC

#include <stdio.h>

#include <malloc.h>

extern double

add (double a, double b);

#endif

add.c

#include "add.h"

double

add (double a, double b){

return a+b;

}

main.cxx

extern "C"

{

#include "add.h"

}

int

main()

{

double a=5.2, b=65.47;

double c=add(a,b);

printf("%lf\n",
c);

return 0;

}

用于编译的makefile如下:

makefile

main:main.o add.so

g++ -o main main.o ./add.so -g

add.so:add.c

gcc -fpic -shared -g -o add.so add.c -I ./

main.o:main.cxx

gcc -c main.cxx -I ./

clean:

rm *.so *.o main

需要注意的是,在生成可执行文件时,用的编译命令为g++, 而不是gcc,如果用gcc编译将出现如下错误:

umain.o:(.eh_frame+0x11): ndefined reference to `__gxx_personality_v0'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: