如何用C语言调用C++生成的动态链接库
答案:2 悬赏:0 手机版
解决时间 2021-01-29 01:17
- 提问者网友:凉末
- 2021-01-28 03:47
如何用C语言调用C++生成的动态链接库
最佳答案
- 五星知识达人网友:大漠
- 2021-01-28 04:04
C++是会做名字分裂的,因此你在C++的动态库中的函数前面用如下代码修饰一下
导出的函数前 都需要加入 extern “C”,
导出的函数前 都需要加入 extern “C”,
全部回答
- 1楼网友:狂恋
- 2021-01-28 05:33
-fpic 作用于编译阶段,告诉编译器产生与位置无关代码(position-independent code),则产生的代码中,没有绝对地址,全部使用相对地址,故而代码可以被加载器加载到内存的任意位置,都可以正确的执行。这正是共享库所要求的,共享库被加载时,在内存的位置不是固定的。 动态链接库的使用 : 第一步,链接器需确认程序所需要的变量和函数名是否包含在程序或者是动态链接库中。 第二部,程序运行的时,系统的动态加载器会检查哪些动态链接库需要连接到程序,从而将这些库文件载入内存。 方法/步骤 ubuntu 14.04 linux c gcc (ubuntu 4.8.2-19ubuntu1) 4.8.2 file 1: add_func.c int add_func(int a,int b) { return a+b; } file 2: sub_func.c int sub_func(int a ,int b) { return (a-b); } file 3 : math_test.c #include <stdio.h> int main(int argc,char *argv[]) { int rc,a = 100,b=50; printf("a = %d ,b = %d \n",a,b); printf("a - b = %d \n",sub_func(a,b)); printf("a + b = %d \n",add_func(a,b)); return rc; } 3 编译: 生成动态链接库 : root@linux:~/code# gcc -fpic -shared -o math_func.so add_func.c sub_func.c 编译main函数: root@linux:~/code# gcc -o math_test math_test.c ./math.so 执行: root@linux:~/code# ./math_test a = 100 ,b = 50 a - b = 50 a + b = 150
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯