有关基于CTP API封装的编译是一项关键的技术,其起到由CTP API封装到gateway的承上启下的作用,在这块小编也是踏坑无数,遇到诸如VS下链接器工具错误等等问题,差点要放弃,幸运的是在颠簸的搭车路上想到了症结所在,本质上也许是boost库没有编译成功,其或与python版本、VC++工具有关,还好最终还是解决了,寥寥一篇文章写不了太多心得,就当是做个记录,这个关卡的突破很值得纪念。
配置环境
小编下载的boost C++ library是Version 1.68.0;
因为VN.Py中对CTP API的封装用到了boost.python,为此,必须编译其中的boost.python库,其需要python支持,考虑方便,小编下载的是Anaconda2-5.3.1-Windows-x86.exe(Win 32位版本,带Python2.7)。
Visual Studio2013带VC++ 12.0,给其配置命令行环境,在菜单栏中的TOOLS列中,点选ExTernal Tools,给其配置Command Prompt,其作用见官方解释:The Visual Studio Developer Command Prompt automatically sets the environment variables that enable you to easily use .NET Framework tools. The Developer Command Prompt is installed with VisualStudio.详细配置过程参考官方文档:
https://docs.microsoft.com/en-us/dotnet/framework/tools/developer-command-prompt-for-vs
安装并编译Boost库
在visual studio command prompt下转到boost安装目录,执行以下命令以编译boost库,耗时在半个钟左右。
封装API的编译
给工程配置属性,依次是三个地方:Include Directories、Reference Directories、Linker-Additional LibraryDirectories;并拒绝使用预编译头,小编的配置如下:
之后建立win32项目,应用类型为dll,编译时选择Release版本,成功后改后缀为.pyd,即可为Python2调用,没错成功了。
也许还有很多细节没有提到,但是这个编译流程大致如此,能编译成功还是很开心的,最后贴一张编译成功的OutPut:
领取专属 10元无门槛券
私享最新 技术干货