jni c java互相调用_通过JNI实现Java和C++的相互调用

评论

# re: 通过JNI实现Java和C++的相互调用

2008-07-29 14:14

Always BaNg.

不错,把字符转换也一并讲了吧,比如UTF-8的处理,USC-2与MBCS转换等。  回复  更多评论

# re: 通过JNI实现Java和C++的相互调用[未登录]

2008-07-29 14:17

role0523

你是指Java和C++之间的字符转换?

目前还没有研究过字符转换。

回复  更多评论

# re: 通过JNI实现Java和C++的相互调用

2008-07-31 23:58

coldsummer

如果是现成的dll呢?比如某硬件提供的开发dll开发包,我如何调用?  回复  更多评论

# re: 通过JNI实现Java和C++的相互调用[未登录]

2008-08-01 00:05

role0523

@coldsummer

由于JAVA调用C++需要一定的格式,比如在JAVA中声明native方法,然后通过javah生成一个头文件,然后写cpp文件,但必须实现这个头文件中声明的JNIEXPORT方法。这些方法是Java调用C++的入口。所以在这些方法内部填写对你的DLL的调用即可。  回复  更多评论

# re: 通过JNI实现Java和C++的相互调用

2008-08-26 17:14

lfking

你的这个JAVA调用C++的例子,我试了一整天,没试明白!~~

在最后编译成DLL文件时老是报错,不知道是怎么回事!~~~

错误代码如下:请你帮分析一下!谢谢!~

c:\documents and settings\william\my documents\visual studio 2005\projects\nativecode\nativecode\source.cpp(5) : error C2144: syntax error : 'void' should be preceded by ';'

c:\documents and settings\william\my documents\visual studio 2005\projects\nativecode\nativecode\source.cpp(5) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

c:\documents and settings\william\my documents\visual studio 2005\projects\nativecode\nativecode\source.cpp(5) : error C2146: syntax error : missing ';' before identifier 'Java_org_druze_test_TestNative_sayHello'

c:\documents and settings\william\my documents\visual studio 2005\projects\nativecode\nativecode\source.cpp(5) : error C2182: 'JNICALL' : illegal use of type 'void'

c:\documents and settings\william\my documents\visual studio 2005\projects\nativecode\nativecode\source.cpp(5) : error C2065: 'JNIEnv' : undeclared identifier

c:\documents and settings\william\my documents\visual studio 2005\projects\nativecode\nativecode\source.cpp(5) : error C2065: 'env' : undeclared identifier

c:\documents and settings\william\my documents\visual studio 2005\projects\nativecode\nativecode\source.cpp(5) : error C2065: 'jobject' : undeclared identifier

c:\documents and settings\william\my documents\visual studio 2005\projects\nativecode\nativecode\source.cpp(5) : error C2146: syntax error : missing ')' before identifier 'obj'

c:\documents and settings\william\my documents\visual studio 2005\projects\nativecode\nativecode\source.cpp(5) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

c:\documents and settings\william\my documents\visual studio 2005\projects\nativecode\nativecode\source.cpp(5) : error C2078: too many initializers

c:\documents and settings\william\my documents\visual studio 2005\projects\nativecode\nativecode\source.cpp(5) : error C2059: syntax error : ')'

c:\documents and settings\william\my documents\visual studio 2005\projects\nativecode\nativecode\source.cpp(6) : error C2143: syntax error : missing ';' before '{'

c:\documents and settings\william\my documents\visual studio 2005\projects\nativecode\nativecode\source.cpp(6) : error C2447: '{' : missing function header (old-style formal list?)

Generating Code...

生成日志保存在“file://c:\Documents and Settings\william\My Documents\Visual Studio 2005\Projects\NativeCode\NativeCode\Debug\BuildLog.htm”

NativeCode - 13 个错误,0 个警告

========== 全部重新生成: 0 已成功, 1 已失败, 0 已跳过 ==========

回复  更多评论

# re: 通过JNI实现Java和C++的相互调用[未登录]

2008-08-26 17:38

role0523

你没有指定jni.h,jni_md.h的include path,以及 jvm.dll的路径,具体参考文章后半部分  回复  更多评论

# re: 通过JNI实现Java和C++的相互调用

2008-08-27 10:24

lfking

你说要指定jni.h 和 jni_md.h的include path 这个我都做了,就是少做一个JVM.DLL的路径,试过了,还是一样的错误!~

我做的是JAVA 连接 C++ 需要做这个JVM.DLL的路径吗?  回复  更多评论

# re: 通过JNI实现Java和C++的相互调用[未登录]

2008-08-27 10:46

role0523

sorry, jvm.dll不用指定,因为我们这里不需要它。

这样好了,你把org_druze_test_TestNative.h和jni.h复制到source.cpp相同的目录下,将#include 修改为#include "jni.h" 试试看。

你的问题是jni.h的头文件没有在头文件的搜索路径当中。  回复  更多评论

# re: 通过JNI实现Java和C++的相互调用

2008-08-27 12:01

lfking

我按照你上面写的步聚建立一个WIN32的工程,建好以后,会自动建立一个stdafx.h的头文件和stdafx.cpp文件!然后运行source.cpp的时候提示错误说必须要用stdafx.h这个头文件,加上去以后就出现这些错误了!

唉!~把jni.h放到source.cpp同一个目录下了,还是不行!~~

我留个QQ号给你吧,Q上聊!47145748!

你这BOLG上面不能发图片!

回复  更多评论

# re: 通过JNI实现Java和C++的相互调用

2008-08-27 12:04

lfking

vc以前从来没接触过,只是听说过!所以用起来有点愚纯!~~抱歉!~~  回复  更多评论

# re: 通过JNI实现Java和C++的相互调用[未登录]

2008-08-27 15:12

role0523

你把stdafx.h的头文件和stdafx.cpp删除掉吧  回复  更多评论

# re: 通过JNI实现Java和C++的相互调用

2008-08-28 10:31

lfking

无语了都.....

如果把stdafx.h和stdafx.cpp删除的话,会提示错误,说没有加载stdafx.h文件。

大哥,这个例子你试过没啊??是否成功了?你那个版本的VC??我是用VC2005做的!  回复  更多评论

# re: 通过JNI实现Java和C++的相互调用[未登录]

2008-08-28 11:00

role0523

就如我文中所说,我用的VS2008,VC6,codeBlocks.我没搞定,不会写东西的。你的问题在于你对C++的编译器不是很熟悉,这我帮不了你。

BTW:如果把stdafx.h和stdafx.cpp删除的话,会提示错误,说没有加载stdafx.h文件。

那是你的某个地方#include了这个文件,OK?  回复  更多评论

# re: 通过JNI实现Java和C++的相互调用

2008-08-28 14:53

lfking

7.编译,生成NativeCode.dll,并将其copy到环境变量PATH的路径下。

10.注意NativeCode.dll必须放置在java命令能访问的路径中。

这个不是很了解。能不能在说的具体点!

我是把NativeCode.dll放在与TestNative.java文件同一个目录下!   回复  更多评论

# re: 通过JNI实现Java和C++的相互调用[未登录]

2008-08-28 14:58

role0523

NativeCode.dll是由java.exe->jvm.dll->NativeCode.dll这样调用的。你把NativeCode.dll放到与java.exe同目录下,OK?

回复  更多评论

# re: 通过JNI实现Java和C++的相互调用

2009-05-21 18:10

Necho

完全按照楼主的做法结果确报这个错误,请楼主帮我看下吧

First-chance exception at 0x00411a20 in NativeCode2.exe: 0xC0000005: Access violation reading location 0x00000000.

Unhandled exception at 0x00411a20 in NativeCode2.exe: 0xC0000005: Access violation reading location 0x00000000.  回复  更多评论

# re: 通过JNI实现Java和C++的相互调用

2009-05-21 18:21

Necho

补充一下 应该就是不能findclass  回复  更多评论

# re: 通过JNI实现Java和C++的相互调用

2009-05-21 18:24

Necho

如果可以的话 请加我MSN:necho_leco@yhotmail.com

或者QQ :55128128

想向你请教,谢谢~!   回复  更多评论

# re: 通过JNI实现Java和C++的相互调用

2009-05-22 10:19

Necho

测试成功了 感谢LZ提供这么详细的说明 谢谢~~!!  回复  更多评论

# re: 通过JNI实现Java和C++的相互调用[未登录]

2009-09-04 14:43

阿飞

楼主,请问下:我在VC6。0控制台下可以加载JAVA虚拟机了,为什么到了VC6.0的MFC下用同样的方法加载不了(编译不报错,但是调试的时候通不过),盼回复,谢谢!  回复  更多评论

# re: 通過JNI實現Java和C++的相互調用[未登录]

2009-12-18 13:40

sunny

樓主:

請問我在編譯C++時,出現這個錯誤訊息:

error C2065: 'JNI_VERSION_1_6' : undeclared identifier

我使用的是JDK1.6  回复  更多评论

# re: 通过JNI实现Java和C++的相互调用

2009-12-18 23:39

nobody

@sunny 看看这个声明在哪个头文件里面,把它include进来

回复  更多评论

# re: 通过JNI实现Java和C++的相互调用

2010-01-09 11:52

next

@lfking

朋友,这个连接的最下方是你要的答案

http://www.experts-exchange.com/Programming/Languages/CPP/Q_22048796.html

引用:

phongtran72:

Well, this generates error:

#include "jni.h"

#include "stdafx.h"

#include

#include

And this is solution:

#include "stdafx.h"

#include

#include

#include "jni.h"  回复  更多评论

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/412102.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Apache——Introduction

Apache——IntroductionIntroduction Apache是有着10年悠久历史的项目了,据有关方面的调查,有超过70%的站点都使用Apache作为Web Server,可见其应用的广泛了。Apache适用于现代的各种操作系统,包括Unix、Linux和Window…

洛谷 P3244 / loj 2115 [HNOI2015] 落忆枫音 题解【拓扑排序】【组合】【逆元】

组合计数的一道好题。什么非主流题目 题目背景 (背景冗长请到题目页面查看) 题目描述 不妨假设枫叶上有 \(n​\) 个穴位,穴位的编号为 \(1\sim n​\)。有若干条有向的脉络连接着这些穴位。穴位和脉络组成一个有向无环图——称之为脉络图&…

[vue] 说说你对选项el,template,render的理解

[vue] 说说你对选项el,template,render的理解 el: 把当前实例挂载在元素上 template: 实例模版, 可以是.vue中的template, 也可以是template选项, 最终会编译成render函数 render: 不需要通过编译的可执行函数template和render, 开发时各有优缺点, 不过在线上尽量不要有templa…

mysql获取离当前数据最近的数据_Mysql 获取最近数据信息

今天select * from 表名 where to_days(时间字段名) to_days(now());昨天SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) – TO_DAYS( 时间字段名) < 1近7天SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) < date(时间字段名)近30天SELECT * FROM 表名 wh…

参加宴会的烦恼

公司历经很多磨难&#xff0c;终于挺过来了&#xff0c;明天就是正式重新成立的日子&#xff0c;我有幸去参加宴会&#xff0c;要求穿便服&#xff0c;一年四季穿工作服习惯了&#xff0c;自己衣服倒不知道该怎么穿了。看来我又要败家了。。。。。看中的衣服都好贵&#xff0c;…

[vue] 说说你使用vue过程中遇到的问题(坑)有哪些,你是怎么解决的?

[vue] 说说你使用vue过程中遇到的问题&#xff08;坑&#xff09;有哪些&#xff0c;你是怎么解决的&#xff1f; 从详情页返回列表页时, 要保存所有状态, 比如: 滚动条位置, 数据, 下拉数据等 当时想用keep-alive, 后来没用, 直接存储一些关键数据, 返回到router时重新加载了…

python 列表嵌套字典 添加修改删除_【Python】列表嵌套字典修改字典里面的一个值却把全部的值都修改了。...

具体问题就是&#xff1a;当我往空列表里面添加字典&#xff0c;需要修改其中的一个键的值的时候&#xff0c;出现把其他同类的值也修改了。下面就是出现问题的代码&#xff1a;aliens []new_alien {"color": "green"}#往字典里添加5个字典for num in ra…

配置msf连接postgresql数据库

BackTrack 5 R3版本的Metasploit在每次的升级后总会出现奇奇怪怪的错误&#xff0c;主要是Ruby的库出错&#xff0c;网上找了一些解决的办法&#xff0c;但每次更新后又会出错&#xff0c;蛋碎。 解决方法&#xff1a; BackTrack 5中默认自动开启端口7337。 1、查看PostgreSQL端…

js :check 檢查

DropDownList是否選定的判定&#xff1a;if (Form1.DropDownList1.selectedIndex(parseInt("0"))){ alert("12555"); return false;}checkbox是否選定的判定&#xff1a;if (document.Form1.RadioButton1.checkedfalse) { alert(請選定復判結果&#x…

[vue] 组件和插件有什么区别?

[vue] 组件和插件有什么区别&#xff1f; 组件 (Component) 是用来构成你的 App 的业务模块&#xff0c;它的目标是 App.vue。插件 (Plugin) 是用来增强你的技术栈的功能模块&#xff0c;它的目标是 Vue 本身。个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放…

java8 stream to map_Java 8 Stream Api 中的 map和 flatMap 操作

1.前言Java 8 提供了非常好用的 Stream API ,可以很方便的操作集合。今天我们来探讨两个 Stream 中间操作 map 和 flatMap2. map 操作map 操作是将流中的元素进行再次加工形成一个新流。这在开发中很有用。比如我们有一个学生集合&#xff0c;我们需要从中提取学生的年龄以分析…

string和byte[]的相互转换

string --> byte[]byte[] dataSyste.Text.Encoding.ASCII.GetBytes(string);byte[]-->stringstring string1 Encoding.ASCII.GetString( bytes, 0, bytesSize );如果有中文字符把Encoding.ASCII换成Encoding.GetEncoding("gb2312") 转载于:https://www.cnblogs…

imagemagick for java_ImageMagick使用for java(im4java)

简介&#xff1a;用于读、写、处理图片文件&#xff0c;支持89种格式的图片文件&#xff0c;利用imageMagick可以根据web应用程序动态生成图片&#xff0c;也可以将一个或者一组图片改变大小、旋转、锐化、减色、增加特效等操作&#xff0c;并对操作结果进行保存(可以设置保存格…

[收藏]网络营销十道羊皮卷

羊皮卷之一&#xff1a;一个与企业名称和形象相符的域名&#xff0c;是企业进行网络营销的前提。由于域名具有唯一性&#xff0c;一个域名一旦注册成功&#xff0c;任何其他机构都无法注册相同的域名。因此&#xff0c;域名是企业重要的网络商标&#xff0c;在网络营销中起到企…

[vue] 删除数组用delete和Vue.delete有什么区别?

[vue] 删除数组用delete和Vue.delete有什么区别&#xff1f; delete&#xff1a;只是被删除数组成员变为 empty / undefined&#xff0c;其他元素键值不变Vue.delete&#xff1a;直接删了数组成员&#xff0c;并改变了数组的键值&#xff08;对象是响应式的&#xff0c;确保删除…

Python模块学习

阅读目录 第一篇&#xff1a;Python模块之netmiko 第二篇&#xff1a;Python模块之junos-eznc 第三篇&#xff1a;Python模块之pexpect 第四篇&#xff1a;Python模块之paramiko 第五篇&#xff1a;Python模块之XlsxWriter 第六篇&#xff1a;Python模块之requests,urllib和re …

web文件加密

讲解以及源代码下载ASP.NET 2.0: Encrypting Connection Strings http://blogs.vertigosoftware.com/snyholm/archive/2005/12/16/1746.aspx http://msdn2.microsoft.com/en-us/library/yxw286t2.aspx中文http://msdn2.microsoft.com/zh-cn/library/yxw286t2.aspx ASP.NET 2.0:…

java开发和android开发_浅谈Java开发和Android开发的不同

Java是具有多种用例的完整开发语言&#xff0c;包括Web开发&#xff0c;PC程序开发&#xff0c;嵌入式开发等。Android开发是面向手机应用&#xff0c;使用Java较多&#xff0c;还有常用的H5跨平台混合架构模式。一&#xff0c;UI界面开发不同1)Java Swing现在Java开发基本上都…

[vue] v-model是什么?有什么用呢?

[vue] v-model是什么&#xff1f;有什么用呢&#xff1f; 一则语法糖&#xff0c;相当于v-bind:value"xxx" 和 input&#xff0c;意思是绑定了一个value属性的值&#xff0c;子组件可对value属性监听&#xff0c;通过$emit(input, xxx)的方式给父组件通讯。自己实现…

远程上传下载文件-Xftp5

Xftp5下载 链接&#xff1a;https://pan.baidu.com/s/1Wzso_Q7mPy5uGOUlripEWg 密码&#xff1a;xfx9 安装选择家庭版 由于21端口没有开&#xff0c;所以不能选FTP, 选择SFTP&#xff0c;22端口 用哪个用户登录机会自动到该用户的家目录 连接上出先乱码问题 属性 OK. 转载于:h…