恒峰娱乐ag旗舰厅
首页 恒峰娱乐ag旗舰厅 恒峰娱乐App 公司介绍公司动态
[ 公司动态 ]

成都汇智动力-Java调用C++动态链接库dllVS2015+Ecli

[ 公司动态 ]

  新浪娱乐讯 7月20日,《这!就是街舞》选手杨文昊在北京举行了舞蹈专场,这也是国内首个个人舞蹈专场,节目选手石头、林梦等人作为表演嘉宾出席活动。(王远宏/摄影)

  由于之前一直没有接触过用Java调用C++,目前正在考虑用C++写主要的算法,然后用Java来调用。通过查找资料,发现要嘛用通信的方式,要嘛就使用JNI,也就是Java Native Interface的简称,中文是“Java本地调用”。通常在Java程序中的函数可以调用Native语言写的函数,Native一般指的是C/C++编写的函数。

  Native程序中的函数可以调用Java层的函数,也就是说在C/C++程序中可以调用Java的函数。使用JNI的目的是为了屏蔽不同操作系统平台的差异性,通过Java语言来调用Native语言的功能模块。

  本次博主将通过详细截图的形式来演示如何使用Java调用C++dll。按照截图完成,保证可以用。

  我们需要用javah命令来生成头文件。回到bin目录下,因为这里涉及到包名,所以必须在包目录下来。按住shift键,同时在文件夹内空白处右击,可以进入命令行。当然,你也可以一步步进入到该路径下。

  这里需要注意的是,文件的末尾不加上.class后缀。然后我们可以看到在bin目录下多了一个.h头文件。

  接着我们需要引入的头文件有三个,一个是刚刚使用javah生成的头文件,剩下两个需要在JDK中拷贝,博主这里使用的是JDK7的,现在将这三个头文件拷贝到C++工程的目录下。jdk的头文件在jdk的安装目录下,这两个文件的目录如下:

  此时我们看到,貌似报错了呀!别着急,想必学过C++的人都知道这是系统库和自定义库的区别。这里将改成“”就可以啦!

  这里有两种方法,一种是在环境变量中path里追加上这个dll所在的路径;一种是将这个dll文件拷贝到已经存在于path中的路径下。博主这里采用后者,因为博主的jdk配置了环境变量。所以直接将该dll拷贝到jdk的bin目录下。

  习强调,土耳其在有关重大国际和地区问题上有着特殊影响和作用。中土两国要继续在联合国、二十国集团等多边机制框架内就重大问题密切沟通与协调,为推动建设新型国际关系和构建人类命运共同体作出积极贡献。

  所以我这里就将这个dll拷贝到jdk8的路径下,读者不要混淆,虽然博主这里采用jdk7,但是那是eclipse指定的项目jdk环境,是可以指定的,不要和环境变量这个混淆。

  例如如果A机器是VS2010,该DLL是使用VS2010编译,在本机上测试通过,但换了一个机子,就报上面的错误。如果报这个错误,首先可以肯定的是,库得路径都是对的。这时候,如果你去安装VS2010,问题肯定就解决了,但是VS2012装起来太麻烦了。所以这里的解决方法是在A机器上使用VS2010编译C++的DLL时,去掉/MD选项。具体步骤:


 发表时间:2018-08-11 人气: 196↑
随便看看