解决relese不能编译的问题

解决relese不能编译的问题

ID:8927030

大小:328.28 KB

页数:7页

时间:2018-04-12

解决relese不能编译的问题_第1页
解决relese不能编译的问题_第2页
解决relese不能编译的问题_第3页
解决relese不能编译的问题_第4页
解决relese不能编译的问题_第5页
资源描述:

《解决relese不能编译的问题》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、窗体顶端用户名:  密码:登录窗体底端注册结冰的雪非淡薄无以明志,非宁静无以致远 主页博客相册

2、个人档案

3、好友 查看文章 【原创】找不到MSVCR90.dll、DebugvsRelease及cppLapack相关2009年03月16日星期一上午02:07关键词:找不到MSVCR90.dllDebugReleasecpplapack       最近使用cppLapack,nmake运行正常,在Release模式下也编译运行正常,在Debug模式下也能编译通过,但一运行就弹出一个对话框,提示没有找到MSVCR90D.dll,程序未能启动,而如果把该DLL拷贝到系统目录或当前目录下,又会

4、出现另一问题,提示说DebugError,我都疯掉了,程序是示例程序,没有错的,但究竟哪里错了呢?图1:找不到MSVCR90.dll图2:更多的错误图3:解决方法之一图4:解决方法之二       于是百度之,首先找到一个答案说这是VisualStudio2008安装在FAT32分区下的bug,转换为NTFS就行了,但这显然不是我想要的,因为我的硬盘全都是NTFS的;于是继续google,找到一篇文章,,说是要在配置里忽略掉MSVCRT库,我试了一下问题依旧;继续google,这回找到MSDN上了,MSDN说是没有安装VC运行库,于是我又从microsoft上下回来VC运行库,安装,

5、问题依旧。快要疯了。继续google+baidu,功夫不负有心人,终于让我找到了答案,现记录在此,供参考。1.        在“属性”->“C/C++”->“代码生成”->“运行时库”里面设为“多线程DLL”。2.        在程序里添加这一行奇怪的代码:#pragmacomment(linker,""/manifestdependency:type='Win32'name='Microsoft.VC90.CRT'version='9.0.21022.8'processorArchitecture='X86'publicKeyToken='1fc8b3b9a1e18e3b'l

6、anguage='*'"")   由以上表现可知问题出在Debug模式里,又搜索了Debug与Release模式的区别,得到的答案是:实际上,"Debug"和"Release"只是两套IDE预先设定好的编译参数和宏定义组合(例如我们经常遇到的_DEBUG和NDEBUG宏)。编译器并不知道Debug和Release之分(不过MD和MDd编译参数会区分Debug版本和Release版本的运行时库)。当混用用Debug设置编译的程序和Release版本的运行时库的时候,由于它们生成的时候使用的是两套不同的编译选项,因此非常可能互不兼容。        另外,STL在Debug与Relea

7、se模式下性能有较大的差异,所以测试STL是最好在Release模式下。        再说一说cppLapack,由于最近要做矩阵运算所以使用了这个东西。它是一个小日本写的,封装了lapack(著名的线性代数库,这个大家都知道了吧)一些常用的函数,注意是常用而不是全部。lapack性能虽然没得说,但接口不是很友好,使用起来有些不方便。cppLapack是sourceforge上的一个开源项目,主页为http://cpplapack.sourceforge.net/,它的接口比较好用,性能也还不错,还独有“Smart-Temporary”系统以最小化临时变量(实际上是一些数组)的复制

8、,其实就是尽量重复使用内存以提高效率。但它数据类型有限,而且限制只能为double,不能使用float,矩阵功能也有限,只能解决一些基本的线性代数问题,如转置、矩阵乘积、求逆、解线性方程等,要是拿来做共轭梯度就不行了(这要靠IntelMKL,有空再说)。        前面说了一大堆cpplapack,但如何使用还是一个尚未解决的问题,一个好的库如果编译不了再好也没用,是吧?我曾从网上下过很多源码,但很少有拿来就能编译成功的(是不是有同感?),cpplapack也不例外。看看都会出现什么error吧:c:cpplapackcpplapackincludedgematrix-

9、dgematrix-misc.hpp(163):errorC2061:语法错误:标识符“A”c:cpplapackcpplapackincludedgematrix-dgematrix-misc.hpp(165):errorC2440:“=”:无法从“double**(__cdecl*)(void)”转换为“double**”没有使该转换得以执行的上下文这只是其中两个,其它错误类似。原始代码未经修改怎么会出错?怎么办?还好,作者给了我们原因及解决

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。