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++编译动态链接库)的主要内容,如果未能解决你的问题,请参考以下文章

linux下intel的mkl编程代码,怎么样编译。C++和C语言代码

面试必备 | 常见C++笔试面试题整理

gcc和g++的区别转自中国源码网

GCC与G++的区别

1.12

linux下,有几个.so。如何将这几个动态库编译成一个动态库