jni电话涉及开放的cobol dlls

时间:2016-07-04 14:25:03

标签: gcc java-native-interface static-linking cobol gnucobol

我正在尝试使用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输出创建二进制文件

1 个答案:

答案 0 :(得分:1)

通过正确指定-lcob链接选项(使用gcc时)可以解决此问题。用于创建二进制文件的gcc命令已经包含该选项,但是它被错误地放在目标文件和源文件之间,这不起作用。在没有JNI调用的情况下执行dll,不知何故不需要-lcob选项,但是从JNI调用需要-lcob链接选项。