我在C#库中编写了很多代码,我现在需要从Java调用它.
我在SO上建议使用JNA,但是我甚至无法摆脱起跑线; 那里的文件非常粗略.
首先,它似乎只是告诉你如何连接到Native C库,这对我没有好处; 我想连接到我自己的库.代码示例显示:
// This is the standard, stable way of mapping, which supports extensive
// customization and mapping of Java to native types.
public interface CLibrary extends Library {
CLibrary INSTANCE = (CLibrary)
Native.loadLibrary((Platform.isWindows() ? "msvcrt" : "c"),
CLibrary.class);
void printf(String format, Object... args);
}
Run Code Online (Sandbox Code Playgroud)
我想连接到我的库(MyLibrary.dll),并调用MyNamespace.MyClass其C#签名为的静态方法:
public static string HelloWorld(string p)
Run Code Online (Sandbox Code Playgroud)
那么我给出的参数是什么Native.loadLibrary()?
那只是为了"Hello World".如果我想要返回一个对象怎么办?我们说MyClass也有一个静态方法
public static MyClass GetInstance()
Run Code Online (Sandbox Code Playgroud)
我如何使用JNA调用它?我想我必须定义在Java中,在C#相匹配的接口MyClass界面...但它必须是详尽的,即对于每一个公共的成员MyClass,我将不得不宣布在一个方法IMyClass的Java接口?或者我可以省略我不关心的界面?
欢迎任何示例代码!
Mic*_*ker 11
您将无法直接从Java调用C#代码.JNA只能访问本机库(C或C++).但是,您可以在库中启用COM Interop,并将2与本机包装器链接在一起.即它会看起来像:
Java --(JNA)--> C/C++ --(COM Interop)--> C#
有几种选择:
| 归档时间: |
|
| 查看次数: |
5016 次 |
| 最近记录: |