2
我想用JNI調用現有的COBOL應用程序。 COBOL應用程序結構如下。jni打開cobol dll調用
c-wrapper(main)-->COBOLProgram -> several dyn(.so) and static called modules
現有的COBOL應用程序涉及到幾個靜態調用子程序(COBOL)和許多動態(COBOL)的。
Jni調用應用程序是可以的,但它無法找到並調用COBOL動態子模塊。
(對於JNI)修改後的應用結構如下:
java class --> libjni.so --> appl.so
我的呼叫之前驗證COB_LIBRARY_PATH和LD_LIBRARY_PATH環境變量,這些似乎是細。
以下錯誤消息得到了case動態模塊。
libcob: ....<module>.so: undefined symbol: cob_save_call_params
我在Linux上使用64位,1.1.0。 gcc用於使用cobc命令的c輸出創建二進制文件
LD_LIBRARY_PATH只能指向libcob和它所需的so-files。 COB_LIBRARY_PATH應該包含所有COBOL模塊。 它們是什麼樣的? 您確定您對java運行時和libcob以及應用程序文件都使用相同的體系結構(32/64位)嗎?你得到了什麼確切的錯誤?你使用什麼版本的OpenCOBOL? –
使用錯誤消息和OC版本更新了問題。在調用之後我使用異常,所以錯誤沒有顯示。 – cobp
好的,因此問題不在被調用的模塊中,而是在libcob本身的一個符號中。它是否有助於通過'export LD_PRELOAD =/path/to/libcob.so'強制模塊加載(在啓動Java之前必須完成**)? 順便說一句:「linux」不是非常具體;-)側面問題:[抱歉污染問題]這是否發生[GnuCOBOL 2.0開發快照](https://sourceforge.net/projects/open-cobol/ files/gnu-cobol/2.0/gnu-cobol-2.0_nightly_r624.tar.gz/download)呢? –