编写 Window 下 Python C程序

本文介绍如何使用GCC编译C++代码为动态链接库,并通过Python的ctypes库来调用C++编写的类方法。首先,创建了一个简单的C++类,然后编译该类为libfoo.so动态链接库。接着,编写了Python脚本fooWrapper.py来加载这个库,并实例化C++类,调用其成员函数。最后,验证了跨语言调用的成功。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1)下载 mingw-get-setup.exe

安装需要gcc 等


2)编成C程序

#include <iostream>

class Foo{
    public:
        void bar(){
            std::cout << "Hello" << std::endl;
        }
};

extern "C" {
    Foo* Foo_new(){ return new Foo(); }
    void Foo_bar(Foo* foo){ foo->bar(); }
}


用下面的命令,编译得到 libfoo.so

g++ -c -fPIC foo.cpp -o foo.o
g++ -shared -Wl,-soname,libfoo.so -o libfoo.so  foo.o


3)写Python 文件 fooWrapper.py

from ctypes import cdll
lib = cdll.LoadLibrary('./libfoo.so')

class Foo(object):
    def __init__(self):
        self.obj = lib.Foo_new()

    def bar(self):
        lib.Foo_bar(self.obj)
		
f = Foo()
f.bar()		

运行fooWrapper.py 成功


接下来看把python 发布出去需要打包哪些文件


ref:http://stackoverflow.com/questions/18101215/submit-int-and-string-arrays-using-ctypes-python-c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值