python 传递结构体指针到 c++ dll

CMakeLists.txt

# project(工程名)
project(xxx)

# add_library(链接库名称 SHARED 链接库代码)
add_library(xxx SHARED xxx.cpp)

xxx.cpp

#include <iostream>
using namespace std;

// c++ 结构体定义
struct struck_ {

    // 股票名,字符串
    char * stock_code_;

    // 开盘价
    double stock_open_;
};

// 声明为标准 C 格式导出的函数
extern "C" {

    // 参数接受结构体指针
    int struck_function_(struck_ * struck_pointer_) {
        cout << struck_pointer_->stock_code_ << endl;
        cout << struck_pointer_->stock_open_ <<endl;
        return 0;
    }
}

xxx.py

from ctypes import *

# python 结构体定义
class py_struct_(Structure):
    _fields_ = [("stock_code_", c_char_p), ("stock_open_", c_double)]

# python 结构体实例化,初始化
py_struct_1 = py_struct_()
py_struct_1.stock_code_ = b"Hello world!"
py_struct_1.stock_open_ = 123456

# 取结构体指针
py_struct_1_pointer_ = byref(py_struct_1)

# 获取 dll 句柄
h_dll_ = CDLL('C:\\Users\\Perelman\\.CLion2016.1\\system\\cmake\\generated\\xxx-34f96d0d\\34f96d0d\\Debug\\libxxx.dll')

# 打印结果
print(h_dll_.struck_function_(py_struct_1_pointer_))

360截图20160625011323895

转载于:https://www.cnblogs.com/blog-3123958139/p/5615663.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值