目录
1 配置属性-》常规-》配置类型 要为 “动态库(.dll)”
写在前面:
1 我最开始是用swig直接对对上期技术的C++包进行处理,处理成python可调用的版本后,行情和交易可以正常连接和登录,但当我使用交易服务器查询合约,等待回调函数时就崩溃提示异常退出 -1073740791 (0xC0000409),而且没有任何错误信息。经过反复重编译,.i文件的修改都无法解决此问题,只能放弃使用swig的方法,转而借鉴VeihgNa Studio的接口。
2 VeihgNa Studio的CTP接口是使用的pybind11和setuptools封装成python可用的包
3 本文直接通过 VeihgNa Studio 的源码记录转换过程
前置准备:
1 安装Visual Studio 2022,安装前选择组件要包含C++动态链接库的模板
2 安装python3,本文安装的版本为python3.7.1
step 1 与上期所原始代码对比分析源码
下载 VeihgNa Studio 的CTP源码 GitHub - vnpy/vnpy_ctp: VeighNa框架的CTP交易接口
下载后解压,解压后文件目录如下:

在 vnpy_ctp/api/vnctp/ 目录下有C++项目

右键vnctp.sln , 在弹出菜单中选择打开方式为 Visual Studio 2022

直接按“确定”

td源码
vnctptd项目工程文件结构

上期提供的ThostFtdcMdApi.h、ThostFtdcTraderApi.h 、ThostFtdcUserApiDataType.h、ThostFtdcUserApiStruct.h 在【头文件】中
vnctp.h和vnctptd.h 是 VeihgNa Studio 作者写的,以下分析这两个头文件
双击vnctp.h, 会发现 const dict &d 提示错误

这个问题是由于我们只是拷贝了项目代码,项目代码的依赖项没有变更,以下处理这个问题:
右边选中 vnctptd 项目,右键-》属性
1 配置属性-》常规-》配置类型 要为 “动态库(.dll)”

2 VC++目录 -》包含目录
修改前

1) D:\veighna_studio\include 这个修改为python安装目录下的include目录,本文python3.7.1对应的目录为 D:\soft\python371\include
2)其他三项不用修改,我们下载的源码包里已经包含


修改后

3 VC++目录 -》 库目录
修改前

1) D:\veighna_studio\libs 修改为python安装目录下的libs文件夹目录
2)..\libs 不用变,下载的源码里有包含这个文件夹
修改后

4 链接器-》常规-》附加库目录
修改前

1) D:\veighna_studio\libs 修改为python安装

本文详细记录了将VeighNaStudio的CTP接口源码转换为Python可用的过程,包括源码分析、VisualStudio配置、错误处理、生成pyd文件等步骤,并介绍了如何在Python中使用封装后的接口进行行情和交易操作。


被折叠的 条评论
为什么被折叠?



