Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中使用.dll_Java_C#_Dll - Fatal编程技术网

如何在Java中使用.dll

如何在Java中使用.dll,java,c#,dll,Java,C#,Dll,我有一些C#代码,我已经编译成.dll,作为其他程序的资源。如何将其导入Java项目以供使用,然后如何引用dll中的代码。我正在使用Eclispe for Java。我认为最简单的方法是使用JNA(Java Native Access)库,它简化了过程。 首先,下载jna.jar()并将其附加到项目中 稍后,用Java创建一个接口,该接口将以以下方式连接.dll库和Java代码: import com.sun.jna.Library; import com.sun.jna.Native; imp

我有一些C#代码,我已经编译成.dll,作为其他程序的资源。如何将其导入Java项目以供使用,然后如何引用dll中的代码。我正在使用Eclispe for Java。

我认为最简单的方法是使用JNA(Java Native Access)库,它简化了过程。 首先,下载jna.jar()并将其附加到项目中

稍后,用Java创建一个接口,该接口将以以下方式连接.dll库和Java代码:

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


public interface CLibrary extends Library {
    CLibrary INSTANCE = (CLibrary) Native.loadLibrary(
        (Platform.isWindows() ? "windowsDLLName" : "otherDLLName"), CLibrary.class);
    void someMethof(String format, Object... args); // <--example function from dll lib
}
您必须涵盖以下主题:

  • JVM对本机dll库的访问,请参阅
  • Java和C/C++之间的类型映射,请参见 如果您需要示例,以下是一些来源:

  • blog.mwrobel.eu/我读到的如何从java调用dll方法/

    @JohnD…我看到了这个问题,但没有真正理解它,所以我问了这个问题“没有真正理解”我真的认为你在这项任务中不会取得多大成功,你尝试做的事情没有得到很好的支持,而且更高级。我会评估其他选项。@JohnD还有什么其他选项可以让我在Java中使用C#。转换代码不是一个选项。我指的是在Java中使用C#代码以外的选项。@JohnD这也不是一个选项。那么,你对我如何做到这一点有什么其他想法吗?请看这篇关于为什么基本上只是链接的答案不能被真正接受的元讨论:@Grzesuav但如果这不是本机windows程序呢?代码中写着ifWindows(),这是否意味着它只适用于windows?有没有通用的方法来完成这一部分?没有“通用”路径,因为本机程序需要在每个平台上分别编译,例如,在linux上没有dll库,所以您需要将本机程序也编译为linux*库。你到底想达到什么目的?我认为问题在于从java调用本机代码。如果您处理本机代码,那么您是特定于平台的。
      CLibrary.INSTANCE.someMethod()