【g++】python调用c++代码(g++编译动态链接库)

1、准备三个样例文件,均在同一目录下

hello.cpp

#include "hello.h"
#include 
int main()
{
    std::cout << "Hello main\n";
    helloWorld();
    return 0;
}

helloWorld.cpp

#include 
void helloWorld()
{
    std::cout << "Hello World\n";
}

hello.h

void helloWorld();

2、编译成.so【wrong】,待修改

g++ -shared -fPIC -o main.so hello.cpp helloWorld.cpp

得到main.so文件

注:-shared表示输出文件为共享链接库文件,-fPIC表示position-independent code,即位置无关代码。对于共享链接库来说,其是在代码运行时进行调用的,因此代码中不能有绝对寻址,而需要相对寻址,所以需要加上-fPIC,表示输出的代码是位置无关的

生成的so是依赖于编译平台的,如果要在Windows上的python进行调用so,那么需要在Windows下进行编译成so,如果是在Linux下得到的so,用Windows python中的ctypes来调用则会报错

3、

你可能感兴趣的:(计算机科学与技术,c++,开发语言)