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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM