Java怎么调用c/c++写的库

问题描述

Java怎么调用c/c++写的库

接口供应商给我们发来aa.h , aa.dll 文件 还有一个api文档。向各位大神求救,搞了一天都不懂,真心痛苦

解决方案

java通过jni可以调用C++写的dll
http://www.cnblogs.com/xiehy/p/3365682.html

解决方案二:

http://blog.csdn.net/cskerrydn/article/details/4719521

解决方案三:

你都有API文档了,就是你JNI的时候设置好对应的DLL名称,函数名称,参数信息等,注意Java跟C++的类型之间的对应

解决方案四:

你是用eclipse吧,给你个完整的,
eclipse 配置jni工具:->ExternTool->javah.exe路径 C:Program Files (x86)Javajdk1.8.0_40injavah.exe
->当前目录: ${project_loc} ->参数:-v -classpath "${project_loc}/bin" -d "${project_loc}/jni" -jni ${java_type_name}

例子:
/*java调用C++动态库,例子/
public class HelloWorld {

public static void main(String []args)
{
    LoadDll.displayHelloWorld(); //调用

}

}
/*生成JNI文件的类,名字随意*/
public class LoadDll {
public native static void displayHelloWorld();//库函数
static{
System.loadLibrary("LoadDll"); //库名字
}
}

VC: jni.h和C:Program Files (x86)Javajdk1.8.0_40includewin32的jawt_md.h、jni_md.h移动到VC程序的 C:Program Files (x86)Microsoft Visual Studio 9.0VCinclude

DLL的位数要和JDK位数一致
编译生成DLL,移到java的bin目录

解决方案五:

java调用C/C++写的dll
如何在C/C++中调用Java
java调用c/c++代码

时间: 2024-09-08 02:25:52

Java怎么调用c/c++写的库的相关文章

Java如何调用C++ DLL库_java

 最近做了一个网页端人脸识别的项目,用c++写了人脸识别的算法,但是在网页端要使用java后台,这其中就涉及到了java调用dll的问题.下面是小编通过查阅相关资料,实现的一个简单例子. 1.第一步,先在Java中新建一个类 如上图,其中注意这句System.loadLibrary("javaCallcpp");,这就是加载dll文件的代码了.然后我们需要dll中实现下面定义的加减乘除方法. 2.编译文件,文件名为Java2cpp.java,首先编译成class文件,如果用的是ecli

Kotlin的互操作——Kotlin与Java互相调用

互操作就是在Kotlin中可以调用其他编程语言的接口,只要它们开放了接口,Kotlin就可以调用其成员属性和成员方法,这是其他编程语言所无法比拟的.同时,在进行Java编程时也可以调用Kotlin中的API接口. Kotlin与Java互操作 1 Kotlin调用Java Kotlin在设计时就考虑了与Java的互操作性.可以从Kotlin中自然地调用现有的Java代码,在Java代码中也可以很顺利地调用Kotlin代码. [例1]在Kotlin中调用Java的Util的list库. packa

怎么通过java去调用并执行shell脚本以及问题总结

该文章来自阿里巴巴技术协会(ATA)精选集 背景 我们在开发过程中,大部分是java开发, 而在文本处理过程中,主要就是脚本进行开发. java开发的特点就是我们可以很早地进行TDDL, METAQ 等等地对接: 而脚本开发的特点就是在进行批处理的时候非常方便. 前阵子我遇到这么一个需求场景: 对抓取的数据进行打包, 后来又遇到我要通过脚本进行抓取,比如nodejs下基于phantomjs的casperjs爬虫. 解决方法 对于第一个问题:java抓取,并且把结果打包.  那么比较直接的做法就是

java方法调用的问题 这个repaint()调的是哪个 为什么啊??

问题描述 java方法调用的问题 这个repaint()调的是哪个 为什么啊?? public class test { public static void main(String[] args) { new test().start(); } public void start(){ new A().m(); } class A{ public void m(){ repaint(); } public void repaint(){ System.out.println("nihao&qu

java的虚拟机有底层都调的是c吗?java能调用汇编嘛?阿门!

问题描述 java的虚拟机有底层都调的是c吗?java能调用汇编嘛?阿门! RT.往大师围观.java的指针封装的c那一块的指针嘛?java比较c又一次.nnd 解决方案 java可以用jni调用原生的代码,你可以用C(嵌入汇编)或者汇编去写一个dll给java调用. 但是注意,java本身是平台无关的,但是原生代码就不是.所以你要是调用了原生代码,那么比如你的pc的软件,就不容易移植给手机了. 解决方案二: Java虚拟机jvm--java虚拟机底层结构详解深入java虚拟机(一)--java

java方法调用参数问题

问题描述 java方法调用参数问题 最近在看<java编程思想>,其中有一句话:[图片说明](http://img.ask.csdn.net/upload/201507/02/1435824299_513845.png) 既然参数是引用类型,于是我就做了一些试验: class A{ public void f(Integer i){ i = 10; } public void h(Data data){ data.i=2; data.str="abc"; } } class

代码-java中怎么引用自己写的函数

问题描述 java中怎么引用自己写的函数 我是一个java新手,写了一段代码,有关:摄氏度和华氏度之间的互相转化 package method; import method.HuaShe; public class TestCToFandFToC { public static void main(String[] args){ System.out.println("摄氏 华氏 华氏 摄氏"); for(int i = 1;i <= 10;i++){ double she1 =

jquery-Java中使用datagridview,如何在操作列上调用我自己写的function函数?

问题描述 Java中使用datagridview,如何在操作列上调用我自己写的function函数? 问题描述:datagridview中的行都是使用jquery生成的.现在跟操作列上绑定单击时间的时候总是找不到我自己写的函数,请问有什么解决办法吗? 解决方案 这种问题你得学会调试.用IE F12,看你链接的地址对不对,是不是指向你的函数调用,这是第一,一般来说是href设置为#,onclick为你的函数,然后是你的函数有没有执行,如果执行了,单步调试. 解决方案二: 写function自定义函

共享库-编译安装gcc后,新的gcc仍调用原有gcc的动态库,怎么解决?

问题描述 编译安装gcc后,新的gcc仍调用原有gcc的动态库,怎么解决? 您好,我在linux系统(自带有gcc)的机器上下载了gcc源码,编译并安装成功,安装路径区别于系统自带安装的gcc路径,新的gcc可以正常编译我写的测试程序,但是,我用ldd hello.out发现hello.out调用的还是原来的.so共享库,没使用新安装的gcc库,我配置了LD_LIBRARY_PATH变量为新gcc路径,但使用ldd hello.out发现还是调用原有gcc so库文件,怎样使新安装的gcc调用自