评论

# 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"  回复  更多评论

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

  1. java socket 远程调用_使用Socket反射Java流操作进行方法的远程调用(模拟RPC远程调用)...

    写在前面 阅读本文首先得具备基本的Socket.反射.Java流操作的基本API使用知识:否则本文你可能看不懂... 服务端的端口监听 进行远程调用,那就必须得有客户端和服务端.服务端负责提供服务,客 ...

  2. java 动态链接_菜鸟提问:java 调用不了Windows动态链接库方式出错

    调用方式:LedControl INSTANCE = (LedControl) Native.loadLibrary("LEDSender2010",LedControl.clas ...

  3. java future用法_纯干货:Java学习过程中的21个知识点和技术点

    我们在Java学习过程中要学会抓重点,善于总结,Java学习过程中常见的21个知识点和技术点你知道吗?下面和千锋广州小编一起来看看吧! 1. JVM相关 对于刚刚接触Java的人来说,JVM相关的知识 ...

  4. java线程堆栈_深入JVM剖析Java的线程堆栈

    在这篇文章里我将教会你如何分析JVM的线程堆栈以及如何从堆栈信息中找出问题的根因.在我看来线程堆栈分析技术是Java EE产品支持工程师所必须掌握的一门技术.在线程堆栈中存储的信息,通常远超出你的想象 ...

  5. java python算法_用Python,Java和C ++示例解释的排序算法

    java python算法 什么是排序算法? (What is a Sorting Algorithm?) Sorting algorithms are a set of instructions t ...

  6. java 判断类型_如何快速入门Java编程学习(干货)

    一.初识Java 1.生活中的程序: 从起床到教室上课的过程 穿衣打扮>起床>洗漱>出宿舍>>吃早餐>到教室 按照特定的顺序去完成某一件事的过程我们叫做生活中的程序 ...

  7. java必读书籍_最佳5本Java性能调优书籍–精选,必读

    java必读书籍 为什么Java开发人员应该阅读有关性能调优的书? 当我很久以前第一次面对这个问题时,我以为以后会做,但是我很长一段时间都没有回过头来. 仅当我在用Java编写的任务关键型服务器端财务 ...

  8. 做Java头发少_这35个Java代码优化细节,你用了吗

    链接:https://www.jianshu.com/p/6e472304b5ac 前言 代码 优化 ,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有 ...

  9. java static关键字_好程序员Java教程分享static关键字的理解

    好程序员Java教程分享static关键字的理解,static关键字含义可以理解为静态的. 1. 当其修饰属性时,该属性为整个类公有,所有的对象操作的都是同一个静态属性.所以调用时应该使用类名去调用, ...

最新文章

  1. 大数据在犯罪预防中有独特价值
  2. 【JOURNAL】搭配/ IKEA Match
  3. 2021HDU多校8 - 7059 Counting Stars(线段树)
  4. php7过滤,PHP7过滤unserialize()
  5. 网络新潮文化:Wiki不完全手册
  6. OpenCV学习(27) 直方图(4)
  7. LeetCode 298. 二叉树最长连续序列(自顶向下)
  8. (82)Verilog HDL:状态机二段式
  9. 艰难前行的故事 (《梦断代码》读后感)
  10. python为什么无法保存然后弹跳出来_python-从字典中弹出键,值对的整洁方法?
  11. centos ipython tab键上下键不起作用
  12. PDFLib去水印办法
  13. 安装程序提示本地计算机已存在源,安装卡巴斯基出现“不能访问Window Installer服务”...
  14. 虚拟机安装win7时遇到的问题及解决方案
  15. .bat脚本初体验——使用批处理bat清洗文件名
  16. Forward(请求转发)和Redirect(重定向)的比较
  17. 如何将拉勾网(智联招聘)的预览简历导出来
  18. 用什么软件可以修改PDF文件,软件的操作方法
  19. Oracle 学习之建表、索引、同义词以及SQL优化
  20. 解决谷歌浏览器打开后是毒霸浏览器的问题

热门文章

  1. react学习(8)----数组方法fliter简介
  2. [css] 检测sass中错误的指令是哪个?
  3. [css] 写出在不固定宽高的元素在固定高度的情况下水平垂直居中的方法
  4. 工作312:uni-弹出框显示数据
  5. 前端学习(2796):实现左侧数据渲染和点击高亮
  6. 前端学习(2755):配置tabber其他属性
  7. 前端学习(2682):重读vue电商网站2之前台启动
  8. 前端学习(2054)vue.js课程介绍
  9. 前端学习(2012)vue之电商管理系统电商系统之手动为upload组件添加请求头
  10. 前端学习(220):伪元素选择器