码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-06-25 06:11:42      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:

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_))

技术分享

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

标签:

原文地址:http://www.cnblogs.com/blog-3123958139/p/5615663.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!