2
使用Java和JNA庫,我想訪問商業DLL文件(C#)中的靜態方法。如何訪問靜態方法?
不幸的是,Java 7不允許在一個接口中使用靜態方法,雖然Java 8會對此進行修改,但最新的beta版本顯得無關緊要。
建議/更正是受歡迎的(我是JNA的新手,並且正在避免JNI),並且我已經使用Javonet來確認方法簽名。
import com.sun.jna.Library;
import com.sun.jna.Native;
public class INeedHelp {
public interface MyInterface extends Library {
public static boolean isDisconnected(); //Mirror of C# method signature, but wont work
public boolean isDisconnected(); //best fit, but throws exception "Error looking up function 'isDisconnected': The specified procedure could not be found."
}
public static void main(String[] args) {
MyInterface anInstance = (MyInterface) Native.loadLibrary("theDLL", MyInterface.class);
anInstance.isDisconnected();
}
}
我知道這是不相關的問題,但你能解釋什麼'靜態{ Native.register(「theDLL」)做'static'; }'做? – vikingmaster
@Jari這是一個[靜態初始化塊](http://docs.oracle.com/javase/tutorial/java/javaOO/initial.html),它將在首次初始化類類型時由JVM運行。換句話說,在任何代碼可以調用或使用該類之前,它將始終由JVM運行。 –
哦,它就像一個靜態的構造函數?真棒 – vikingmaster