一、步驟1:下載Linux_64_CTP_API
交易接口和行情接口同時配置,將下載好的文件命名爲:MdUserapi_linux64行情接口、Tradeapi_linux64交易接口,此文件下的目錄如下:(此處文件名字可以自定義,包括下面的文件名字也是一樣的,但是配置核心和關鍵步驟不能有錯誤,形散而神凝)
二、步驟2:利用swig開發工具生成jar(windows和Linux這一步是相同的)
關於swig點擊打開鏈接
在MdUserapi_linux64和Tradeapi_linux64 分別 創建thostmduserapi.i和thosttraderapi.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_linux64和Tradeapi_linux64 分別創建 src、test、wrap三個文件夾,同時在test文件夾下創建文件夾thostmduserapi和thosttradeapi,最終結果如下圖所示(交易接口目錄圖省略):
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文件
2)、MdUserapi_linux64目錄下多了兩個文件:thostmduserapi_wrap.h、thostmduserapi_wrap.cpp
5、cd到src目錄下,執行如下命令:
javac *.java
此時在src目錄下出現等量的class文件:
6、copy文件夾src下所有的class文件到test\thostmduserapi文件夾下,然後cd到Linux64_CTP_API\MdUserapi_linux64目錄下,執行如下命令:
此時在Linux64_CTP_API\MdUserapi_linux64目錄下出現thostmduserapi.jar文件:jar cf thostmduserapi.jar test
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
Dos窗口的記錄如下圖:jar cf thosttradeapi.jar test
結果如下圖:
三、步驟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、執行命令:
4、依次執行命令:./configure --prefix=/usr/local
make
5、此時在usr/local/lib此目錄下可看到不同版本的libiconv.so文件make install
(二)、編寫預編譯文件生成so文件
1、將windows上面的Linux_ctp_API文件(包含MdUserapi_linux64和Tradeapi_linux64)全部copy到Linux的/opt下:
將一下7個文件copy到wrap中,在thostmduserapi.so前面加lib,並創建makefile文件(總共八個文件):
行情接口預編譯文件makefile內容:
上面是行情接口相關文件,下面是交易接口wrap文件以及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
2、分別執行make命令: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
此時會生成thostmduserapi_wrap.o和thostmduserapi_wrap.so,但是編譯時出現warning,將新生成的兩文件文件再次刪除,重新make,行情接口生成結果最終如下:
同理交易接口make成功最終結果如下:
註釋後:
3、將libthostmduserapi.so、libthostmduserapi_wrap.so(行情接口)和libthosttradeapi.so、libthosttraderapi_wrap.so(交易接口)copy到/usr/lib目錄下。
至此,動態庫文件生成完畢。
四、測試和驗證
在windows的Eclipses上面創建Java項目MdUserDemo,快速打成jar包,運行結果如下:
代碼正常運行,證明此次配置是成功的。