利用SWIG将CTP封装成JAVA版本
2022/7/28 14:25:15
本文主要是介绍利用SWIG将CTP封装成JAVA版本,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
重点参考景色大佬文章:
CTP JAVA API(JCTP)编译(利用Swig封装C++动态库)windows版_景色正好的博客-CSDN博客
Swig转换C++接口中文乱码解决方案_景色正好的博客-CSDN博客
其中第二篇文章里,直接用文中给出的i修改方式会报错,原因在文章的评论区。
最后可用的 .i 文件全文如下:(将市场接口和行情接口打包到一个jar中)
%module(directors="1") CTP4Java %include "various.i" %apply char **STRING_ARRAY { char *ppInstrumentID[] } %{ #include "ThostFtdcMdApi.h" #include "ThostFtdcTraderApi.h" #include <codecvt> #include <locale> #include <vector> #include <string> using namespace std; #ifdef _MSC_VER const static locale g_loc("zh-CN"); #else const static locale g_loc("zh_CN.GB18030"); #endif %} %typemap(out) char[ANY], char[] { const std::string &gb2312($1); std::vector<wchar_t> wstr(gb2312.size()); wchar_t* wstrEnd = nullptr; const char* gbEnd = nullptr; mbstate_t state = {}; int res = use_facet<codecvt<wchar_t, char, mbstate_t> > (g_loc).in(state, gb2312.data(), gb2312.data() + gb2312.size(), gbEnd, wstr.data(), wstr.data() + wstr.size(), wstrEnd); if (codecvt_base::ok == res) { wstring_convert<codecvt_utf8<wchar_t>> cutf8; std::string result = cutf8.to_bytes(wstring(wstr.data(), wstrEnd)); $result=JCALL1(NewStringUTF,jenv,result.c_str()); } else { std::string result; $result=JCALL1(NewStringUTF,jenv,result.c_str()); } } %feature("director") CThostFtdcMdSpi; %ignore THOST_FTDC_VTC_BankBankToFuture; %ignore THOST_FTDC_VTC_BankFutureToBank; %ignore THOST_FTDC_VTC_FutureBankToFuture; %ignore THOST_FTDC_VTC_FutureFutureToBank; %ignore THOST_FTDC_FTC_BankLaunchBankToBroker; %ignore THOST_FTDC_FTC_BrokerLaunchBankToBroker; %ignore THOST_FTDC_FTC_BankLaunchBrokerToBank; %ignore THOST_FTDC_FTC_BrokerLaunchBrokerToBank; %include "ThostFtdcUserApiDataType.h" %include "ThostFtdcUserApiStruct.h" %include "ThostFtdcMdApi.h" %feature("director") CThostFtdcTraderSpi; %include "ThostFtdcTraderApi.h"
这篇关于利用SWIG将CTP封装成JAVA版本的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南