【发布时间】:2014-08-01 01:53:26
【问题描述】:
我正在尝试从 IBM Domino 中的 Xpage 调用一些第三方 C 代码。我有一个按钮,它有一个 eventHandler,其操作创建一个 Java 对象,然后尝试执行一个方法,该方法只是尝试在 DLL 中加载和运行一个简单的测试 C 函数(通过 JNA)。 (这是在 Windows 7 下运行的。)这是 Java 代码:
interface CLibrary extends StdCallLibrary {
int hello();
}
public class MyHelloWorld {
public void testImage() {
CLibrary INSTANCE2 = (CLibrary) Native.loadLibrary("helloWorld", CLibrary.class);
INSTANCE2.hello();
这里是 C 代码:
#include <stdio.h>
int
hello()
{
printf ("Hello World!\n");
}
我已将 C 代码编译为 dll,并将 .dll 作为资源 -> 设计器中的文件导入。我还将 jna.jar 文件放在服务器的 ext 目录中。当我尝试运行所有这些时,我收到 500 错误。这里发生了很多事情,所以我不确定问题是什么。日志文件没有透露太多。有没有人这样做过?总而言之,我希望能够从 XPage->Java->C 开始。谢谢!
【问题讨论】:
-
DLL 是否可能需要在服务器文件系统上而不是在设计器中作为文件资源?
-
是的,这是很有可能的,也是最大的问号之一。我还没有找到任何文档或指导。我无权访问服务器,所以我希望它可以作为资源处理......
-
跟进,我的第一个问题是 jna.jar 根本没有被加载。我需要一个更新的版本,我相信。一旦我意识到并修复了这一点,我就可以通过将绝对路径作为 Native.loadLibrary() 的第一个参数传递来加载和使用我自己的 DLL。这避免了任何路径问题。 (一方面,我无法轻松修改 jna.library.path ......)