c语言怎样编译成so文件,C++调用C语言编译的so文件
时间: 2023-08-24 18:06:28 浏览: 211
要将C语言编译成so文件,需要使用以下命令:
```
gcc -shared -fpic -o libexample.so example.c
```
其中,-shared参数指定生成动态链接库,-fpic参数指定使用位置独立代码,-o参数指定输出文件名,example.c是C语言源代码文件名。
C++可以通过以下步骤调用C语言编译的so文件:
1. 在C++源代码中包含C语言头文件,并声明C语言函数的原型。
2. 在编译C++源代码时,指定链接C语言编译的so文件。
3. 在C++代码中调用C语言函数即可。
例如,假设C语言编译的so文件名为libexample.so,其中有一个函数add(int a, int b)用于计算a和b的和,那么在C++中可以这样调用:
```cpp
#include <stdio.h>
extern "C" {
int add(int a, int b);
}
int main() {
int a = 1, b = 2;
int sum = add(a, b);
printf("%d + %d = %d\n", a, b, sum);
return 0;
}
```
在编译C++源代码时,需要指定链接libexample.so文件:
```
g++ -o example example.cpp -L. -lexample
```
其中,-o参数指定输出文件名,example.cpp是C++源代码文件名,-L参数指定链接库路径,"."表示当前目录,-lexample表示链接libexample.so文件。
阅读全文