c/c++调用java 第一篇

来源:互联网 发布:大数据就业岗位环境 编辑:程序博客网 时间:2024/06/08 07:39

操作步骤

c这边:
    1,配置环境
          将使用的jni.h头文件,JVM.dll,JVM.lib都包进来
包含需要的头文件和dll

       

包含需要的lib文件  (补充说明在PS)


2,可以编码了


1),创建JVM环境
2),寻找class对象,创建对象
3),调用静态方法和成员方法,非静态方法也可以。
4),用完之后记得将JVM环境销毁。


     3,编译


编译的时候如果报错 无法解析的外部符号 __imp__JNI_CreateJavaVM@12 
原因:1),lib文件没有链接对
              2),编译环境和JVM环境不一致,比如编译平台为win32,但是JDK却是64位的。
我使用的是vs2010



4,运行


运行报错,在创建JVM环境时,一直返回错误码-3(JNI_ERRVERSION)。百思不得其解,最后发现原来在C:\Windows\System32路径下居然有一个jvm.dll,,,哎,好坑。。。。。。
在运行时可能优先加载这里的dll了,导致没有加载到正确的dll。


    关于添加lib的PS注意事项:

设置项目依赖项的时候,把那一串路径用双引号包起来!!!
比如你这样设置C:\Program Files\XXX\lib\XXX.lib,表示你在项目中连接到这个XXX.lib,但是,在Program与File之间有一个空格,所以就解析成了C:\Program, 再所以,就出现 了:C:\Program.obj无法打开,所以你设置的时候写成这样"C:\Program Files\XXX\lib\XXX.lib", 用"" 引号,这个路径包起来就OK了


失败例子:
只是把Program Files包起来也不可以
比如 C:“\Program Files”\XXX\lib\XXX.lib 这样也一样是报错,找不到 C:Program.obj
0 0
原创粉丝点击