g++python调用c++代码(g++编译动态链接库)
Posted _less is more
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了g++python调用c++代码(g++编译动态链接库)相关的知识,希望对你有一定的参考价值。
1、准备三个样例文件,均在同一目录下
hello.cpp
#include "hello.h"
#include <iostream>
int main()
std::cout << "Hello main\\n";
helloWorld();
return 0;
helloWorld.cpp
#include <iostream>
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、
以上是关于g++python调用c++代码(g++编译动态链接库)的主要内容,如果未能解决你的问题,请参考以下文章