Java 正确访问Notes中的DLL,或使用Lotus Notes的NativeCall出错

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

我试图使用LotusNotes中的NativeCall dll调用此函数。但是,此代码不会运行并抛出

  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。