前言:上篇中已经讲了windows下的Java API编译,这篇讲linux的。
0 欢迎交流
CTP_API技术交流群:767101469
https://github.com/nicai0609/JAVA-CTPAPI
1 准备工作
- 下载linux下的libiconv库,自己编译,我这里用到的是
liviconv.a
静态库,可以到我github上下我编译好的。 - 从上期技术官网获得linux版本的tradeapi。拷贝到相应linux环境目录底下。
2 通过swig获得jar包
linux和windows下的jar包得到方式是一样的,参考上一篇,可以直接拿来用
3 编译得到包装动态库so
将上一篇中windows下的thosttraderapi_wrap.cpp
和thosttraderapi_wrap.h
两个文件拷贝到linux相应的目录底下。现在linux目录底下的文件应该如下
libiconv.a
ThostFtdcTraderApi.h
ThostFtdcUserApiStruct.h
thosttraderapi_wrap.h
libthosttraderapi.so
makefile
ThostFtdcUserApiDataType.h
thosttraderapi_wrap.cpp
iconv.h
其中makefile的内容如下:
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.a
$(OBJS) : %.o : %.cpp
$(CC) -c -fPIC $(INCLUDE) $< -o $@
clean:
-rm -f $(OBJS)
-rm -f $(TARGET)
install:
cp $(TARGET) /usr/lib
执行make命令,得到libthosttraderapi_wrap.so
库,说明编译成功。
4 Java Demo
将jar文件,两个动态库so文件,上一篇中的Demo.java文件拷贝到同一个文件夹test
中,该文件夹中清单如下:
libthosttraderapi.so
libthosttraderapi_wrap.so
thosttraderapi.jar
Demo.java
在当前目录下执行命令:
javac -cp ./thosttraderapi.jar Demo.java
编译成功后,执行运行命令:
java -cp ./thosttraderapi.jar:./ Demo
可以看到运行成功。