CTP_API Linux封装64位的Java_CTP_API

一、步骤1:下载Linux_64_CTP_API

交易接口和行情接口同时配置,将下载好的文件命名为:MdUserapi_linux64行情接口、Tradeapi_linux64交易接口,此文件下的目录如下:(此处文件名字可以自定义,包括下面的文件名字也是一样的,但是配置核心和关键步骤不能有错误,形散而神凝)

CTP_API Linux封装64位的Java_CTP_API_第1张图片

CTP_API Linux封装64位的Java_CTP_API_第2张图片

二、步骤2:利用swig开发工具生成jar(windows和Linux这一步是相同的)

关于swig点击打开链接

MdUserapi_linux64Tradeapi_linux64  分别  创建thostmduserapi.ithosttraderapi.i文件,注意里面为英文引号。

1、thostmduserapi.i文件内容:

%module(directors="1")thostmduserapi
%include "various.i"
%apply char **STRING_ARRAY { char *ppInstrumentID[]};
%{
#include "ThostFtdcMdApi.h"
%}
%feature ("director") CThostFtdcMdSpi;
%include "ThostFtdcUserApiDataType.h"
%include "ThostFtdcUserApiStruct.h"
%include "ThostFtdcMdApi.h"

2、thosttraderapi.i文件内容:

%module(directors="1") thosttradeapi
%{
#include "ThostFtdcTraderApi.h"
%}
%feature("director") CThostFtdcTraderSpi;
%include "ThostFtdcUserApiDataType.h"
%include "ThostFtdcUserApiStruct.h"
%include "ThostFtdcTraderApi.h"

3、MdUserapi_linux64Tradeapi_linux64  分别创建 src、test、wrap三个文件夹,同时在test文件夹下创建文件夹thostmduserapithosttradeapi,最终结果如下图所示(交易接口目录图省略):

CTP_API Linux封装64位的Java_CTP_API_第3张图片


4、下载并解压swigwin,可以看到swig.exe.进入Dos命令,cd到当前目录MdUserapi_linux64下,执行一下命令:

D:\Swig\swigwin-2.0.11\swig.exe -c++ -java -package test.thostmduserapi -outdir src -o thostmduserapi_wrap.cpp thostmduserapi.i
运行上面命令,稍等片刻,两点发生了变化:

1)、src文件夹下生成若干个.java文件

CTP_API Linux封装64位的Java_CTP_API_第4张图片

2)、MdUserapi_linux64目录下多了两个文件:thostmduserapi_wrap.h、thostmduserapi_wrap.cpp

CTP_API Linux封装64位的Java_CTP_API_第5张图片

5、cd到src目录下,执行如下命令:

javac *.java
CTP_API Linux封装64位的Java_CTP_API_第6张图片
此时在src目录下出现等量的class文件:

CTP_API Linux封装64位的Java_CTP_API_第7张图片

6、copy文件夹src下所有的class文件到test\thostmduserapi文件夹下,然后cd到Linux64_CTP_API\MdUserapi_linux64目录下,执行如下命令:

jar cf thostmduserapi.jar test
此时在 Linux64_CTP_API\MdUserapi_linux64目录下出现thostmduserapi.jar文件:

CTP_API Linux封装64位的Java_CTP_API_第8张图片

7、上面4~6都是行情接口jar文件的配置,下面只贴出交易接口jar文件生成时的命令,具体详细步骤同行情接口的配置,命令行命令如下:

D:\Swig\swigwin-2.0.11\swig.exe -c++ -java -package test.thosttraderapi -outdir src -o thosttraderapi_wrap.cpp thosttraderapi.i
javac *.java
jar cf thosttradeapi.jar test
Dos窗口的记录如下图:

CTP_API Linux封装64位的Java_CTP_API_第9张图片
结果如下图:

CTP_API Linux封装64位的Java_CTP_API_第10张图片

三、步骤3:在Linux系统上面编译生成动态库so文件

Linux上面的so文件等同于windows上面dll文件,配置大致需要两步。

(一)、Linux上面下载安装libiconv库文件。

CTP结算单信息是GB2313编码,java则用UTF-8,所以需要字符编码库文件进行转换,负责结算单会出现中文乱码。

1、解压libiconv-1.15.tar.gz  注意:/opt(这是我自己的目录)

root@ubuntu:/home/oldtogether/Desktop# tar zxvf libiconv-1.15.tar.gz -C /opt

2、cd到libiconv-1.15

3、执行命令:

 ./configure --prefix=/usr/local
4、依次执行命令:

make
make install
5、此时在usr/local/lib此目录下可看到不同版本的libiconv.so文件

(二)、编写预编译文件生成so文件

1、将windows上面的Linux_ctp_API文件(包含MdUserapi_linux64和Tradeapi_linux64)全部copy到Linux的/opt下:
CTP_API Linux封装64位的Java_CTP_API_第11张图片

将一下7个文件copy到wrap中,在thostmduserapi.so前面加lib,并创建makefile文件(总共八个文件):

CTP_API Linux封装64位的Java_CTP_API_第12张图片

行情接口预编译文件makefile内容:

OBJS=thostmduserapi_wrap.o
INCLUDE=-I./ -I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux
TARGET=libthostmduserapi_wrap.so
CPPFLAG=-shared -fPIC
CC=g++
LDLIB=-L. -lthostmduserapi
$(TARGET) : $(OBJS)
	$(CC) $(CPPFLAG) $(INCLUDE) -o $(TARGET) $(OBJS) $(LDLIB) ./libiconv.so.2.6.0
$(OBJS) : %.o : %.cpp
	$(CC) -c -fPIC $(INCLUDE) $< -o $@
clean:
	-rm -f $(OBJS)
	-rm -f $(TARGET)
install:
	cp $(TARGET) /usr/local/lib
上面是行情接口相关文件,下面是交易接口wrap文件以及makefile文件的内容:

CTP_API Linux封装64位的Java_CTP_API_第13张图片

OBJS=thosttraderapi_wrap.o
INCLUDE=-I./ -I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux
TARGET=libthosttraderapi_wrap.so
CPPFLAG=-shared -fPIC
CC=g++
LDLIB=-L. -lthosttraderapi
$(TARGET) : $(OBJS)
	$(CC) $(CPPFLAG) $(INCLUDE) -o $(TARGET) $(OBJS) $(LDLIB) ./libiconv.so.2.6.0
$(OBJS) : %.o : %.cpp
	$(CC) -c -fPIC $(INCLUDE) $< -o $@ 
clean:
	-rm -f $(OBJS)
	-rm -f $(TARGET)
install:
	cp $(TARGET) /usr/local/lib
2、分别执行make命令:


此时会生成thostmduserapi_wrap.o和thostmduserapi_wrap.so,但是编译时出现warning,将新生成的两文件文件再次删除,重新make,行情接口生成结果最终如下:

CTP_API Linux封装64位的Java_CTP_API_第14张图片

同理交易接口make成功最终结果如下:

CTP_API Linux封装64位的Java_CTP_API_第15张图片

注释后:

CTP_API Linux封装64位的Java_CTP_API_第16张图片

3、将libthostmduserapi.so、libthostmduserapi_wrap.so(行情接口)和libthosttradeapi.so、libthosttraderapi_wrap.so(交易接口)copy到/usr/lib目录下。

至此,动态库文件生成完毕。

四、测试和验证

在windows的Eclipses上面创建Java项目MdUserDemo,快速打成jar包,运行结果如下:

CTP_API Linux封装64位的Java_CTP_API_第17张图片

代码正常运行,证明此次配置是成功的。

你可能感兴趣的:(CTP(综合交易平台))