bundler-sfm windows下编译过程中出现的错误
Posted arxive
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bundler-sfm windows下编译过程中出现的错误相关的知识,希望对你有一定的参考价值。
一、“sysdep1.h”文件缺失
错误提示:
fatal error C1083: 无法打开包括文件: “sysdep1.h”: No such file or directory
这些作为这个软件的bug, 不需要太清楚为什么造成这种错误。只需要更正过来即可。你的经历应该放在对算法的理解上去。
解决方法:
在bundler源码根目录下的libf2c中:
1>将sysdep1.h0文件名修改为sysdep1.h;
2>将signal1.h0文件名修改为signal1.h;
3>新建一个arith.h文件(创建头文件头只需将文件名定义为arith),这本身是个头文件(注意区别里面的cpp文件),在文件里添加如下内容即可:
#define IEEE_8087
#define Arith_Kind_ASL 1
#define Long int
#define Intcast (int)(long)
#define Double_Align
#define X64_bit_pointers
#define QNaN0 0x0
#define QNaN1 0xfff80000
二、<hash_map> is deprecated and will be REMOVED
提示:
hash_map(17): fatal error C1189: #error: <hash_map> is deprecated and will be REMOVED. Please use <unordered_map>. You can define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS to acknowledge that you have received this warning.
原因:
正如所提示的那样,是static assertion failed with "<hash_map> is deprecated and will be REMOVED.
解决方法:
1、在bundler的项目属性下,增加一个定义, /D _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS 。(推荐)
2、在使用include<hash_map>之前,加上#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS定义。(不推荐,比较繁复。)
3、使用unordered_map代替hash_map
以上三种方法任选其一。
三、“int32_t”: 重定义
错误提示:
srcinclude ypes.h(6): error C2371: “int32_t”: 重定义;不同的基类型
解释:
源码中的include ypes.h里的ypedef signed long int32_t定义,与
Microsoft Visual Studio2017EnterpriseVCToolsMSVC14.16.27023includestdint.h
中的int32_t定义冲突了,而且其实也不是一个含义。
解决:
将typedef signed long int32_t这个定义中的int32_t,改为int32_st。并修改VS解决方案里的所有引用。
四、“_isnan”: 不是“std”的成员
提示:
undleadd.cpp(352): error C2039: “_isnan”: 不是“std”的成员
解决:
去掉_isnan前面的std::即可。
参考
windows7下实现Bundler,PMVS,CMVS在VS2010/VS2013上的编译并通过cygwin运行(1). 2016.11
VS2015静态断言失败How to fix hash_map is deprecated and will be REMOVED,2019.6
以上是关于bundler-sfm windows下编译过程中出现的错误的主要内容,如果未能解决你的问题,请参考以下文章