dll文件如果生成的本意是用于C#或者其他语言调用的,用java能调用吗?

我现在用jna有些dll文件能调用,有些不能,jni也是同样,因为不会C和C++,照网上资料写的针对jni方式dll文件,用jna明显不行;同样生成的用于jna调用的dll,用jni不能调用。那如果一个dll文件是用于C#或者其他语言调用的,用java能调用吗?

如果是C#写的,那没戏了,C#的dll是中间代码,不是系统本地代码
C/C++编译出来的是本地代码,真正的二进制代码
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-06-03
JAVA和C#的DLL文件不能互相调用。
需要在网上搜索相关转换方法。

请问JAVA可以调用DLL或者EXE吗?C#可以调用JAR包吗?为什么?
如果直接从java调用DLL或exe肯定是不行的。因为java程序生产的字节码,且必须运行在java虚拟机中,java程序根本不认识二进制的或IL格式的dll或exe;反正,c#程序的格式是IL,无法识别字节码格式的java包,因此也无法直接调用。

java调用C#封装的DLL文件
1. 如果你愿意采用COM组件的方式,可以一试!JAVA有COM4Java的组件(我没记错的话)。先将C#的dll用COM Callerable Wrapper(CCW)封装一下,在C++中编写COM dll调用C#的托管dll,之后在Java中使用COM4J组件访问这个C++编写的COM dll组件!如果不明白,使用Google或者Bing搜索下CCW和RCW。2. webservic...

跨语言调用C#代码的新方式-DllExport
随后,在C语言项目中调用此DLL,验证方法是否可用。同样,Go的`syscall`、Java的`JNI`、Python的`ctypes`等语言也能够轻松调用生成的DLL。尽管使用Native AOT导出方法为跨语言集成提供了便利,但也存在一些限制。例如,对于引用类型的数据传递,需要特别注意如何正确传递指针或序列化后的结构体,以确保数据的...

Java里面的jar包是否就相当于c#编译生成的dll文件?
dll文件,俗称动态链接库文件,是有执行程序可调用的二进制文件,也就是计算机能识别的二进制代码,任何语言都可以调用。只是方法不同而已。jar文件,一般是由java虚拟机解析的,其实相当于将一系列的字节码文件(.java文件)或者包,java虚拟机这些文件通过一些算法序列化(压缩),就形成了jar文件。但程序需...

vc和c#的dll有什么区别?在其他程序调用上。例如:java
1)VC++编译的DLL(动态链接库)是二进制,不需要依赖任何框架。2)C#编译的DLL(动态链接库)是IL中间语言,需要依赖.NET Framework框架。3)JAVA与C#一个样,不管编译的是什么文件都需要依赖环境,用专业术语就是JAVA,C#都需要寄宿到各自的宿主环境。JAVA的宿主环境是JVM(JAVA虚拟机)

一个C#问题,比如说现在我用C#编出了个软件,在没有装vs的电脑上就不能...
网上很多exe不需要.net就可以运行的,不是c#写的,有可能使用的是更低层的语言编译器,比如c++写的(即使是早期c++,也是基于windows的框架下,需要用到一些windows的环境的,而且有些dll是自己写的,也需要安装程序的,除非你能确保你所安装的那台电脑拥有你所需要调用的dll,大多数的软件都会有安装...

...但是生成dll的过程出错,导致C#不能正常调用dll。
这是因为这个jar包中的类引用了其他的jar包,看你的控制台信息是dom4j。你可能需要把dom4j也一起进行转换。

c#写的类库dll文件据说能反编译出一模一样的源代码?
源代码,可能比你自己写的还标准。你可以用VS自带的Dotfrustrator混淆,你还可以加壳,但是脱壳也很容易,.NET快速开发就这样。还有java也是。

C#里,dll文件如何使用??
建立项目的时候选择类库就行了,编译出来就是DLL。DLL里面保存的是编译好的方法,可以被其他程序在需要的时候调用,而不用再重新写一遍。例如:有一个kinghosky.dll,你在工程里的解决方案资源管理器中右键引用,找到本地磁盘中的dll文件,就可以直接添到你的工程里面,使用方法:你可以先using dll中的...

dll动态调用和静态调用有什么区别
1、静态调用时,如果exe所在的文件夹没有dll文件及其lib文件,则运行exe会报错。及exe根本就运行不起来 ,系统提示没有找到dll文件等信息。错误信息是不可控的。 2、动态调用只有再调用dll文件时,如果没有,才会报错,并且此错误时可控的。 如果dll没有对应的.lib文件,那么就只能使用动态加载的方式了。 本回答由电脑网...

相似回答
大家正在搜