我正在尝试使用JNI调用现有的COBOL应用程序。 COBOL应用程序结构如下。
datamodel
现有的COBOL应用程序涉及几个静态调用的子程序(COBOL)和许多动态(COBOL)。
Jni调用应用程序是可以的,但它找不到并调用COBOL动态子模块。
修改后的应用程序结构(对于jni)如下:
c-wrapper(main)-->COBOLProgram -> several dyn(.so) and static called modules
我在CALL之前验证了COB_LIBRARY_PATH和LD_LIBRARY_PATH环境变量,那些似乎没问题。
在案例动态模块中获取以下错误消息。
java class --> libjni.so --> appl.so
我在linux上使用64位,1.1.0。 gcc用于使用cobc命令的c输出创建二进制文件
答案 0 :(得分:1)
通过正确指定-lcob链接选项(使用gcc时)可以解决此问题。用于创建二进制文件的gcc命令已经包含该选项,但是它被错误地放在目标文件和源文件之间,这不起作用。在没有JNI调用的情况下执行dll,不知何故不需要-lcob选项,但是从JNI调用需要-lcob链接选项。