从Java调用Windows Color System

时间:2014-07-19 14:50:57

标签: java windows colors system call

我需要从Java调用Windows Color System函数。在this tutorial之后,我尝试使用Java Native Access调用DLL函数。本教程中的所有示例都可以正常工作当我尝试加载并使用Mscms.dll(其中一个WCS库)时,DLL似乎已成功加载,但我无法调用任何函数。功能列表是here

我收到了一条消息:

Exception in thread "main" java.lang.UnsatisfiedLinkError: Error looking up function 'GetColorDirectory'

我的代码出了什么问题?你能帮帮我吗?

import com.sun.jna.Library;
import com.sun.jna.Native;

public class WCS_test {

public interface Mscms extends Library {
    // http://msdn.microsoft.com/en-us/library/dd316928%28v=vs.85%29.aspx
    boolean GetColorDirectory(String pMachineName, String[] pBuffer, int pdwSize);
}

private static Mscms mscms = (Mscms) Native.loadLibrary("C:/Windows/system32/Mscms.dll", Mscms.class);

public static void main(String[] args) {

    if (mscms != null)
        System.out.println("Library loaded\n");
    else
        System.err.println("Library loading error\n");

    String[] pBuffer = new String[1024];
    mscms.GetColorDirectory(null, pBuffer, pBuffer.length);
}
}

1 个答案:

答案 0 :(得分:1)

当你得到一个java.lang.UnsatisfiedLinkError,这意味着它无法在Mscms.dll中找到函数'GetColorDirectory'。查看源代码http://msdn.microsoft.com/en-us/library/dd316928%28v=vs.85%29.aspx中的链接,您应该尝试使用Unicode名称GetColorDirectoryW。