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的更多相关文章

  1. C/C++语言结构体指针的使用

    C/C++语言结构体指针的使用 主要内容 结构体的使用 - 定义,赋值,结构体指针 结构体作为函数参数的使用 指针的使用 代码内容重点 结构体的使用 - 定义,赋值,结构体指针 结构体作为函数参数的使 ...

  2. ctypes 操作 python 与 c++ dll 互传结构体指针

    CMakeLists.txt # project(工程名) project(blog-3123958139-1) # add_library(链接库名称 SHARED 链接库代码) add_libra ...

  3. C#调用C++DLL传递结构体数组的终极解决方案

    在项目开发时,要调用C++封装的DLL,普通的类型C#上一般都对应,只要用DllImport传入从DLL中引入函数就可以了.但是当传递的是结构体.结构体数组或者结构体指针的时候,就会发现C#上没有类型 ...

  4. 绝对好文C#调用C++DLL传递结构体数组的终极解决方案

    C#调用C++DLL传递结构体数组的终极解决方案 时间 2013-09-17 18:40:56 CSDN博客相似文章 (0) 原文  http://blog.csdn.net/xxdddail/art ...

  5. python调用c/c++时传递结构体参数

    背景:使用python调用linux的动态库SO文件,并调用里边的c函数,向里边传递结构体参数.直接上代码 //test1.c # include <stdio.h> # include ...

  6. C#调用带结构体指针的C Dll的方法【转】

    发现一篇文章关于C#调用DALL动态链接库的函数的,复制下来学习用.感谢作者的分析,原文传送门:https://www.cnblogs.com/ye-ming/p/8004314.html 在C#中调 ...

  7. C#调用带结构体指针的C Dll的方法

    在C#中调用C(C++)类的DLL的时候,有时候C的接口函数包含很多参数,而且有的时候这些参数有可能是个结构体,而且有可能是结构体指针,那么在C#到底该如何安全的调用这样的DLL接口函数呢?本文将详细 ...

  8. 传入的结构体指针强制转为实例化结构体*v

    struct val *v = (struct val *)arg;//传入的结构体指针强制转为实例化结构体*v struct val{ int num1; int num2; }; void *te ...

  9. go语言的结构体指针

    Go 语言结构体 Go 语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型.   结构体是由一系列具有相同类型或不同类型的数据构成的数据集合.   结构体表示一项记录,比 ...

随机推荐

  1. 【51NOD 1478】括号序列的最长合法子段

    很恶心啊,一道水题改了半天,主要是各种细节没有注意到,包括左括号剩余时有可能会出错的情况,需要从后往前扫 贡献一组测试数据: ((()))())(())(( 答案:8 1 #include<cs ...

  2. inline-block 左边固定,右边自适应

    <body> <div class="col-md-4 left"> <div class="logo">默沙东盲讲< ...

  3. CentOS 6.5升级Python和安装IPython(亲测可用)

    python的升级(2.6------>2.7.x) 如下地址:http://note.youdao.com/share/?id=2928aeda020123bfdf2a2c76bc75e4a7 ...

  4. mysql-now()读取当日日期-格式化

    使用系统时间now(): MYSQL 获取当前日期及日期格式获取系统日期: NOW() 格式化日期: DATE_FORMAT(date, format) 注: date:时间字段format:日期格式 ...

  5. ThreadLocal详解(实现多线程同步访问变量)

    ThreadLocal翻译成中文比较准确的叫法应该是:线程局部变量. 这个玩意有什么用处,或者说为什么要有这么一个东东?先解释一下,在并发编程的时候,成员变量如果不做任何处理其实是线程不安全的,各个线 ...

  6. perl 箭头操作符

    箭头操作符有两种用法. 第一种用法是访问引用中的数据元素: #!/usr/bin/perl -w use strict; my @a = (5, 6, 7,9); my $aref = \@a; pr ...

  7. printf 命令

    格式替代符 %b 相对应的参数被视为含有要被处理的转义序列之字符串. %c ASCII字符.显示相对应参数的第一个字符 %d, %i 十进制整数 %e, %E, %f 浮点格式 %g %e或%f转换, ...

  8. C++之再续前缘(二)——类和对象(上)

    1.类的构成:数据和函数 public:可以由在类外由类的对象访问 private:只能由类内的成员函数访问 protected:可以由本类的成员函数访问,也可以由本类的派生类的成员函数访问 访问权限 ...

  9. java 基础拾漏

    1.java语言支持的类型非为两类:基础类型(primitive Type) 和引用类型(Reference Type),基础类型8种 2.数组元素的类型是基本类型中的整数类型(byte,short, ...

  10. NOIP2013

    DAY1 转圈游戏 列出式子(x+km)%n,快速幂. // codevs3285 #include<algorithm> #include<iostream> #includ ...