Java JNI调用.NETDLL
我试图创建一个java应用程序,它将通过中间VisualC++的DLL调用C.*DLL,当我试图从CMD提示符或Eclipse IDE运行.class文件时,它都是好的,但是问题是,为了做到这一点,我需要将C*yDLL放置在与Java.EXE相同的目录中,否则会发生本地调用的异常,因此,不可能构建Java项目,任何关于如何实现这一点的想法都可以使用COM Interop启用并注册托管(.NET)dll。Java JNI调用.NETDLL,java,c#,.net,dll,java-native-interface,Java,C#,.net,Dll,Java Native Interface,我试图创建一个java应用程序,它将通过中间VisualC++的DLL调用C.*DLL,当我试图从CMD提示符或Eclipse IDE运行.class文件时,它都是好的,但是问题是,为了做到这一点,我需要将C*yDLL放置在与Java.EXE相同的目录中,否则会发生本地调用的异常,因此,不可能构建Java项目,任何关于如何实现这一点的想法都可以使用COM Interop启用并注册托管(.NET)dll。 请参阅此链接:没有COM,还有其他方法。如果无法更改.NET组件以支持COM客户端,您可能会
请参阅此链接:没有COM,还有其他方法。如果无法更改.NET组件以支持COM客户端,您可能会发现一个更可取的组件,或者需要一个 当进程加载CLR时,程序集搜索路径由进程的主Win32模块的位置确定。程序集搜索路径与Win32 DLL搜索路径不同。在本例中,它从
java.exe
的位置开始。因此,搜索路径包括全局程序集缓存(GAC)、java.exe
文件夹以及java.exe.config
中作为程序集探测路径列出的子文件夹(如果存在)
看
这导致了一些选择:
gacutil
)java.exe
文件夹中。或者,反过来,将Java的副本放在应用程序文件夹中java.exe.config
并将子文件夹列为探测路径李>
<>使用java调用API在C或C++中创建自己的代码> java > exe e/c>。它与JNI一起记录。你可以随意命名,因为这毕竟是你的申请。(这是许多基于Java的应用程序所做的,即使它们不使用.NET。例如eclipse和LibreOffice。)给出了一个完整的C语言示例。对于典型的MSVC构建,jni.h
需要位于项目的include路径上,jvm.lib
需要位于项目的库路径上,而jvm.dll
需要位于Win32 dll搜索路径中请澄清:您所说的与Java.exe“”位于同一目录中的“
”到底是什么意思?您的意思是需要将C#dll放在java.exe和javac.exe所在的javabin目录中吗?如果是,,确实很奇怪。是的,它似乎只在C#dll与java.exe和javac.exe位于同一目录下时才起作用,否则它会由于找不到dll而导致一些致命错误。在调用代码时,您是否提供了一个合适的类路径?是的……找到我直接调用的vc++dll没有问题,但即使C#dll位于与类相同的目录以及vc++dll仍然抛出了一个异常来解释第四点…看起来真的很有趣…我肯定想尝试一下