【发布时间】:2012-08-12 17:50:10
【问题描述】:
我正在尝试使用 CardScan SDK 中的 Java 示例数据库程序。
我正在处理位于 Java/JNI 和 Java/Database 中的文件。该程序必须使用 32 位 JRE 运行。通过卸载 Java 并安装 32 位版本,然后重新添加 Java 的系统路径,我能够在 64 位机器上执行此操作。我可以通过双击 SDKData.bat 文件成功运行程序并与 CardScan 数据库文件 (.cdb) 交互,但是当我打开源文件进行编辑并编辑 Java.library.path 以包含所需的库 (CRTK_JNI .dll),我到处都得到 UnsatisfiedLinkErrors:
线程“main”中的异常 java.lang.UnsatisfiedLinkError: sdkdata.CRTK.CRTK_Init([I)I
在 sdkdata.CRTK.CRTK_Init(本机方法)
在 sdkdata.CRTK.(CRTK.java:239)
在 sdkdata.SDKData.(SDKData.java:97)
在 sdkdata.SDKData.main(SDKData.java:643)
Java 结果:1
这可能是因为库没有正确加载。
我需要做什么才能满负荷运行和编辑程序(CRTK_JNI 中的所有本机函数都正常工作)?
【问题讨论】:
-
那么,库中有哪些未绑定的符号?
-
@DonalFellows 以下是我认为未绑定的所有内容:pastebin.com/5vsxty5e
-
您不要将 DLL 放入 java.library.path。您放置包含 DLL 的目录。
-
@bmargulies 我明白这一点。我在 java.library.path 中有目录,而不是 DLL。抱歉,如果不清楚。
-
使用 dumpbin /imports 查看您的 DLL 是否需要其他 DLL。如果是这样,它们必须在 PATH 中——java.library.path 不够好。
标签: dll java-native-interface loadlibrary unsatisfiedlinkerror