首页 > 代码库 > JAVA调用C++ dll文件之JNI接口研究——分布函数计算

JAVA调用C++ dll文件之JNI接口研究——分布函数计算

分别对VS平台运行GNU库和JAVA调用VS2010 x64位系统做过一定研究,接下来将试图生成一个调用概率统计函数的dll,将其嵌入JAVA程序中运行。

当准备生成带有正态分布函数的dll文件时,出现如下错误:

1>     正在创建库 d:\documents\visual studio 2010\Projects\GetNrompdf\x64\Debug\GetNrompdf.lib 和对象 d:\documents\visual studio 2010\Projects\GetNrompdf\x64\Debug\GetNrompdf.exp

1>GetNrompdf.obj : error LNK2019: 无法解析的外部符号 __imp_gsl_ran_gaussian_pdf,该符号在函数 Java_cn_dfinder_test_GetNormpdf_normpdf 中被引用

1>d:\documents\visual studio 2010\Projects\GetNrompdf\x64\Debug\GetNrompdf.dll : fatal error LNK1120: 1 个无法解析的外部命令

1>

1>生成失败。

1>

1>已用时间 00:00:00.93

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

 

初步猜测是lib文件放错了位置,将所有的include文件和lib文件都重新拷贝一份,到

 

没能解决问题

加入下列依赖库

 

依旧没有解决问题。

 

 

 

经过无数次调整确认,在64位编译环境下,失败

32位编译环境下,dll成功。

 

1>     正在创建库 E:\VS2010Projects\GnuDllTest\x64\Debug\GnuDllTest.lib 和对象 E:\VS2010Projects\GnuDllTest\x64\Debug\GnuDllTest.exp

1>GnuDllTest.obj : error LNK2019: 无法解析的外部符号 gsl_ran_gaussian_pdf,该符号在函数 Java_cn_dfinder_test_GetNormpdf_normpdf 中被引用

1>E:\VS2010Projects\GnuDllTest\x64\Debug\GnuDllTest.dll : fatal error LNK1120: 1 个无法解析的外部命令

1>

1>生成失败。

 

怀疑与GNU系统自带的dll或者lib版本有关。需要重新编译一下他们的版本。

http://www.heybody.com/2013/09/call-32-dll-x86-in-x86-system.html

有点像我的情形。