Java 正确访问Notes中的DLL,或使用Lotus Notes的NativeCall出错
我试图使用LotusNotes中的NativeCall dll调用此函数。但是,此代码不会运行并抛出Java 正确访问Notes中的DLL,或使用Lotus Notes的NativeCall出错,java,dll,lotus-notes,native-code,Java,Dll,Lotus Notes,Native Code,我试图使用LotusNotes中的NativeCall dll调用此函数。但是,此代码不会运行并抛出 UnsupportedOperationException on NativeCall.init() 因此,我假设dll的位置不正确。我将Nativecall.dll放在C:\Notes文件夹中。我需要把它放在别处吗?或者这是正确的,而代码本身是错误的。我只调用“WindowUtils.isRemote()”打印行。多谢各位 import com.eaio.*; import com.ea
UnsupportedOperationException on NativeCall.init()
因此,我假设dll的位置不正确。我将Nativecall.dll放在C:\Notes文件夹中。我需要把它放在别处吗?或者这是正确的,而代码本身是错误的。我只调用“WindowUtils.isRemote()”打印行。多谢各位
import com.eaio.*;
import com.eaio.nativecall.IntCall;
import com.eaio.nativecall.NativeCall;
import java.io.*;
class WindowsUtils {
public static final int SM_REMOTESESSION = 4096; // remote session
//Session.getPlatform() = Windows/16 or /32
private WindowsUtils() {}
public static boolean isRemote() throws SecurityException, UnsatisfiedLinkError,
UnsupportedOperationException, IOException
{
NativeCall.init();
ntCall ic = null;
try {
ic = new IntCall("user32", "GetSystemMetrics");
int rc = ic.executeCall(new Integer(SM_REMOTESESSION));
System.out.println(rc);
return true;
//return (rc gt; 0);
}
finally {
if (ic != null) ic.destroy();
}
}
public static void main(String ... args) throws Exception {
System.out.println(WindowsUtils.isRemote());
}
}
根据注释中提供的信息,问题是无法加载NativeCall.dll,因为它是为Win64编译的,但Notes客户端代码是Win32。即使在SysWOW64仿真下运行,Win32代码也无法加载64位DLL。NativeCall.DLL在32位和64位版本中都可用吗?如果是,您安装了哪个?64位。原来notes是32位的。那么这种方法不可接受吗?32位Notes代码无法加载64位DLL。您需要32位版本的NativeCall DLL。