天空分享 http://blog.sciencenet.cn/u/runningabc

博文

Visua Studio 2008 编译 cminpack

已有 7358 次阅读 2012-7-14 14:08 |系统分类:科研笔记|关键词:学者| Visual, 2008, Studio, cminpack

minpack有fortran版的和c/c++版的,后者称为cminpack
在cminpack的网站
中提到了cminpack相对于fortran的一些优点。其中一个优点就是cminpack中传入的函数指针的原型相比于fortran的minpack增加了一个void*型的指针,这个传入的指针有大作用,所有在函数体内部需要使用的相关参数都可以通过这个参数给传递进来。比如我们可以将所有参数组合定义为一个结构体,然后将指向该结构体的指针当做参数传递到该函数中。而在fortran当中,我们得定义一些全局变量来实现相同的功能,这对于大规模程序开发来说是不利的。

废话不多说了,从以上网站中找到相应的链接下载cminpack源程序
http://devernay.free.fr/hacks/cminpack/cminpack-1.3.0.tar.gz
解压后,找到cminpack.sln
我这里用的是Visual studio 2008,双击打开后会提示进行转换。
转换完成后,进行编译。
很遗憾,编译的时候报错了:
1>------ 已启动生成: 项目: cminpack, 配置: Debug Win32 ------
2>------ 已启动生成: 项目: cminpack_dll, 配置: Debug Win32 ------
2>cminpack_dll : warning PRJ0009 : 未能打开生成日志进行写入。
2>请确保该文件未被其他进程打开并且未被写保护。
1>正在编译...
2>正在编译...
1>cl: 命令行 warning D9035 :“Wp64”选项已否决,并将在将来的版本中移除
1>lmpar.c
2>cl: 命令行 warning D9035 :“Wp64”选项已否决,并将在将来的版本中移除
2>lmpar.c
1>d:my projectsmylibcminpack-1.3.0lmpar.c(219) : error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
1>d:my projectsmylibcminpack-1.3.0lmpar.c(220) : error C2065: “i”: 未声明的标识符
1>d:my projectsmylibcminpack-1.3.0lmpar.c(220) : error C2065: “i”: 未声明的标识符
1>d:my projectsmylibcminpack-1.3.0lmpar.c(220) : error C2065: “i”: 未声明的标识符
1>d:my projectsmylibcminpack-1.3.0lmpar.c(221) : error C2065: “i”: 未声明的标识符
1>d:my projectsmylibcminpack-1.3.0lmpar.c(221) : error C2065: “i”: 未声明的标识符
2>d:my projectsmylibcminpack-1.3.0lmpar.c(219) : error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
2>d:my projectsmylibcminpack-1.3.0lmpar.c(220) : error C2065: “i”: 未声明的标识符
2>d:my projectsmylibcminpack-1.3.0lmpar.c(220) : error C2065: “i”: 未声明的标识符
2>d:my projectsmylibcminpack-1.3.0lmpar.c(220) : error C2065: “i”: 未声明的标识符
2>d:my projectsmylibcminpack-1.3.0lmpar.c(221) : error C2065: “i”: 未声明的标识符
2>d:my projectsmylibcminpack-1.3.0lmpar.c(221) : error C2065: “i”: 未声明的标识符
2>生成日志保存在“file://d:My ProjectsMyLibcminpack-1.3.0DebugBuildLog.htm”
1>生成日志保存在“file://d:My ProjectsMyLibcminpack-1.3.0DebugBuildLog.htm”
1>cminpack - 6 个错误,0 个警告
2>cminpack_dll - 6 个错误,1 个警告
========== 生成: 成功 0 个,失败 2 个,最新 0 个,跳过 0 个 ==========

容易发现,错误出在impar.c这个源文件当中。
找到219行,将
int i;
这行代码注释起来,然后跳到131行,加上一行代码
int i;

重新编译,这次编译通过了,不过有一个小小的warning
cl: 命令行 warning D9035 :“Wp64”选项已否决,并将在将来的版本中移除
这个warning无关紧要,不过如果你想更清爽一点的话
找到:项目==>cminpack属性==>C/C++==>常规==>检测64位可移植性问题,设置为“否”

OK,重新编译,这下整个世界就清净了。
1>------ 已启动生成: 项目: cminpack, 配置: Debug Win32 ------
1>正在编译...
1>chkder_.c
1>covar.c
1>covar1.c
1>covar_.c
1>dogleg.c
1>dogleg_.c
1>dpmpar.c
1>dpmpar_.c
1>enorm.c
1>enorm_.c
1>fdjac1.c
1>fdjac1_.c
1>fdjac2.c
1>fdjac2_.c
1>hybrd.c
1>hybrd1.c
1>hybrd1_.c
1>hybrd_.c
1>hybrj.c
1>hybrj1.c
1>正在生成代码...
1>正在编译...
1>hybrj1_.c
1>hybrj_.c
1>lmder.c
1>lmder1.c
1>lmder1_.c
1>lmder_.c
1>lmdif.c
1>lmdif1.c
1>lmdif1_.c
1>lmdif_.c
1>lmpar.c
1>lmpar_.c
1>lmstr.c
1>lmstr1.c
1>lmstr1_.c
1>lmstr_.c
1>qform.c
1>qform_.c
1>qrfac.c
1>qrfac_.c
1>正在生成代码...
1>正在编译...
1>qrsolv.c
1>qrsolv_.c
1>r1mpyq.c
1>r1mpyq_.c
1>r1updt.c
1>r1updt_.c
1>rwupdt.c
1>rwupdt_.c
1>chkder.c
1>正在生成代码...
1>正在创建库...
1>生成日志保存在“file://d:My ProjectsMyLibcminpack-1.3.0DebugBuildLog.htm”
1>cminpack - 0 个错误,0 个警告
========== 生成: 成功 1 个,失败 0 个,最新 1 个,跳过 0 个 ==========




https://m.sciencenet.cn/blog-268489-592048.html

上一篇:C++程序中从文本文件读入一个未知行数和列数的浮点矩阵数据
下一篇:C++ 控制台程序字体颜色设置,Windows

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-19 05:36

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部