分别对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
有点像我的情形。
JAVA调用C++ dll文件之JNI接口研究——分布函数计算