java
如何用java调用c编写成的DLL?
一、如何用java调用c编写成的DLL?
谢邀,远程方法调用的思路是对的,就是先用C#写一个WCF调用该库,然后Java调用WCF。如果你的库需要返回的数据只是基本类型的,不会很难。如果你需要返回一个自定义类,那么唯一的出路就是放弃。
二、java调用C写的DLL?
C#调用C#的dll方便多了啊。
1.新建一个C#的类库(Class Library)
代码编辑完成之后,生成该类库,会得到一个dll
2.新建一个控制台应用程序,来调用该类库
2.1 右击References,点击Add reference,在弹出的对话框中,切换到Browse选项卡,然后找到刚才生成的dll
添加完成之后,该控制台应用程序变成了这样
2.2 下面就可以调用了,首先,引入类库的命名空间,然后就可以调用了。
3.大功告成,生成控制台应用程序,运行(记得把ConsoleApplication1设置成启动项)
以上是一个简单的调用,当然C#甚至可以把窗体都封装到dll中,被调用方也不仅限于Console Application. 但是思路都是一致的
三、java如何调用dll?
1. 编写范例文档 public class TestNative { private native static int Max(int a,int b); public static void main(String[] args) { System.out.println(Max(4,5)); } static { System.loadLibrary("VCdll"); } } 其中 LoadLibrary中的DLL文件名称可以随便定.只要做好的动态链接库改名成这个字符串就可以了.而native函数的来源就是该动态链接库.
2. 做好该步准备以后,用javac TestNative.java生成TestNative.class. 检验语法.
3. 语法检查通过以后,用javah TestNative生成TestNative.h的C++头文件.
4. 用VC++6.0创建dll文件: <1>msdev->new->project->win32 Dynamic-Link Library <2>Enter project name (e.g. VCdll) <3>choose "An empty DLL project"->finish <4>将3生成的TestNative.h和jdk下的jni.h和jni_md.h加入到工程中去 <5>Create a c++ file, implements the native method. as follows: //TestNative.cpp #include "TestNative.h" JNIEXPORT jint JNICALL Java_TestNative_Max (JNIEnv * a, jclass b, jint x, jint y) { return x > y ? x : y; } 备注: A 其中的jni.h通常在 jdk\include\ 可以先拷贝到VC安装目录下的include目录下.一劳永逸,以后可以方便使用JNI技术. B 全部的数据类型需要考虑Java和VC的接口问题.用jint jstring 等. C 函数名称和自动生成的.h文件中规定的一致.命名规则是: Java_使用类_方法名 6. 全编译一下VC++工程. 如果没有出错,则此时生成动态链接库成功. 把动态链接库VCdll.dll拷贝到TestNative.java所在的目录上. 7.运行java TestNative. OK :-)
四、java调用DLL动态库?
jni 是由Java调用C/C++的动态链接库 (DLL)。 所以把.class-->.h-->dll ,想法是不正确的, 同时也违背了Jni的初衷。 Dll是由C/C++生成的。 以前的一个项目用到了Java调用C/C++的DLL,所以对这个还算熟悉。 那个dLL是由C++程序员写的,在Microsoft Visual C++ 6.0编辑器中可以生成。然后由Java程序员用JNI来调用DLL里面实现的功能(方法)。
五、java中dll调用失败
Java中dll调用失败是许多开发人员在开发过程中常遇到的问题之一。在Java开发中,使用动态链接库(Dynamic Link Library,DLL)是一种常见的方式,用于扩展Java程序的功能并调用底层系统资源。然而,由于各种原因,可能会出现dll调用失败的情况,导致程序无法正常工作。
常见原因
导致Java中dll调用失败的原因有多种,其中一些主要因素包括:
- 1. DLL文件缺失或损坏
- 2. 路径配置错误
- 3. 32位/64位不匹配
- 4. DLL函数签名不匹配
解决方法
针对Java中dll调用失败的问题,开发人员可以采取一些解决方法,帮助识别并修复这些问
题,确保程序正常运行。以下是一些建议:
1. 检查DLL文件
首先,检查所需的DLL文件是否存在,以及是否完好无损。如果DLL文件缺失或损坏,需要重新获取正确的DLL文件,并确保放置在正确的目录下。
2. 配置路径
确保Java程序能够正确找到DLL文件,需要正确配置DLL文件的路径。可以通过在Java代码中指定DLL文件的绝对路径或将DLL文件放置在Java程序运行的工作目录下来解决路径配置错误的问题。
3. 32位/64位匹配
在调用DLL文件时,需要确保Java程序与DLL文件的位数匹配。如果Java程序是32位的,那么需要使用32位的DLL文件;如果Java程序是64位的,那么需要使用64位的DLL文件,以避免Java中dll调用失败的问题。
4. DLL函数签名
检查所调用的DLL函数的签名是否与Java程序中的调用匹配。如果签名不匹配,可能会导致调用失败。确保在Java程序中正确地引用DLL函数并传递正确的参数。
5. 调试工具
使用调试工具来帮助定位Java中dll调用失败的问题。通过调试工具可以查看程序运行时的状态、变量值以及调用堆栈信息,帮助开发人员快速定位问题所在。
结语
在Java中dll调用失败的情况下,开发人员不必过分担心,只需通过仔细检查和调试,通常可以找到并解决问题。遵循以上建议,可以帮助您更好地处理Java中dll调用失败的情况,确保程序的正常运行。
六、怎样在VBA中调用C#写成的DLL?
比如在VBA中使用Windows API函数Sleep在程序流程中经常要延时一段时间后再继续往下执行Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Private Sub Command1_Click()Text1 = "sleep begin"Sleep 3000Text1 = "sleep end"End SubSleep函数功能是将调用它的进程挂起dwMilliseconds毫秒时间,在这段时间内,此进程不对用户操作做出反应
七、c语言怎么调用DLL?
首先:创建dll 首先创建一个空的DLL文件,创建方法:新建——项目——Win32控制台程序——然后取个名字——确定——下一步——选择DLL——勾选空白项目。顺利新建了名字为Dll1的项目。项目中有这些东西(VS2017) 添加头文件Dll1.h 在头文件中添加导出函数add函数 #pragmaonce extern"C"__declspec(dllexport)intadd(inta,intb); //extern "C" 是表示C语言代码
八、C中如何调用DLL?
(1)编写程序时,你要包含(#include "什么.h") dll文件作者提供 的 头文件(.h文件) 。程序里,便和普通函数调用一样,去调用它的函数。
(2)程序编译时,你要链接 dll文件作者提供 的 (.lib文件) 库文件。当然,你可以在源程序里把.lib 名字 写上,编译时自动去链接,例子:#pragma comment (lib, "什么.lib"
)(3)执行时,要有 .dll 文件. 放在当前文件夹或系统文件夹里。
九、c#如何调用DLL?
方法:
1.添加引用 右击项目-添加引用-浏览 找到本地的dll文件
2.using 该dll文件里面代码的名称空间 然后就可以调用dll文件里面的类(test)和方法(add)了 例如: using aa.test namespace conslole1{ class Program { static void Main(string[] args) { Test test1=new Test(); test1.add(1, 2); } }}
十、C语言如何调用DLL?
C语言可以通过以下步骤调用DLL:1. 首先需要用到Windows API函数LoadLibrary()加载DLL库文件,并返回该DLL的句柄。2. 然后可以使用GetProcAddress()函数获取DLL中特定函数的地址,该函数需要传入DLL句柄和函数名称。3. 获取到函数地址后,可以将其视为一个函数指针,按照函数原型调用该函数即可。因此,C语言可以通过LoadLibrary()和GetProcAddress()这两个API函数调用DLL中的函数。需要注意的是,调用DLL需要注意一些细节,如函数的入参和返回值、函数名称的大小写等问题。
热点信息
-
在Python中,要查看函数的用法,可以使用以下方法: 1. 使用内置函数help():在Python交互式环境中,可以直接输入help(函数名)来获取函数的帮助文档。例如,...
-
一、java 连接数据库 在当今信息时代,Java 是一种广泛应用的编程语言,尤其在与数据库进行交互的过程中发挥着重要作用。无论是在企业级应用开发还是...
-
一、idea连接mysql数据库 php connect_error) { die("连接失败: " . $conn->connect_error);}echo "成功连接到MySQL数据库!";// 关闭连接$conn->close();?> 二、idea连接mysql数据库连...
-
要在Python中安装modbus-tk库,您可以按照以下步骤进行操作: 1. 确保您已经安装了Python解释器。您可以从Python官方网站(https://www.python.org)下载和安装最新版本...