基于ITK编译工程项目时提示 LNK2001 itk::NumericTraits的错误解决方法
2016-12-27 19:47
375 查看
本文由Markdown语法编辑器编辑完成。
对于这个错误,在网上查询了一些解答和方案,但是都没有找到好的解决方案。
LNK 2001的错误和LNK 2019的错误还不太一样。如果是LNK 2019的错误,那么我可以很明确地知道它一定是由于lib缺失而导致的,我就可以专心去找lib的错误。
但是LNK 2001的错误有几个因素,关于LNK 2001的错误解释,MSDN上的解释为:
int val = itk::NumericTraits::Zero.
最后,在访问国外的一些论坛时,看到一个回答,给了我一个提醒。
他提到:这个可能跟当时在编译ITK时选择的默认编译选项有关。
我于是想起了,我之前可能中途修改过ITK的编译选项,就是是否要编译动态链接库的选项。
具体的回答如下所示:
https://cmake.org/pipermail/insight-users/2004-March/007206.html
因为,ITK的编译和VTK的编译稍微有点差别。VTK的编译,默认是会既编译出Lib,又编译出DLL的。而ITK的编译,默认是不编译DLL的。
但是,当你勾选了”BUILD_SHARED_LIBS”后,它就会重新编译出dll。
这样,如果你先后编译选项选择得不一样时,生成的静态链接库Lib就是不一样的。这样会存在Lib的版本不一致的问题。而正是因为这个原因,而导致了在编译时,会出现如LNK 2001那样的错误。
所以,明确了问题的原因后。将原来编译好的lib先删除掉,然后重新生成Lib文件,再调试就应该没有问题了。
http://www.cnblogs.com/lxw0109/archive/2012/05/02/LNK2001.html
完。
1. 问题提出:
前段时间在运用ITK作为第三方库进行项目编译时。编译过程中弹出了LNK 2001的错误。错误提示大概是:对于这个错误,在网上查询了一些解答和方案,但是都没有找到好的解决方案。
LNK 2001的错误和LNK 2019的错误还不太一样。如果是LNK 2019的错误,那么我可以很明确地知道它一定是由于lib缺失而导致的,我就可以专心去找lib的错误。
但是LNK 2001的错误有几个因素,关于LNK 2001的错误解释,MSDN上的解释为:
int val = itk::NumericTraits::Zero.
2. 问题解决:
大部分在网络上搜到的原因,都是说可能是变量没有初始化导致的。但是,很明显我犯的不是这样的错误。而且,系统奔溃时定位的itk::NumericTraits::Zero类我也并没有使用过,怎么会定位在这里呢。最后,在访问国外的一些论坛时,看到一个回答,给了我一个提醒。
他提到:这个可能跟当时在编译ITK时选择的默认编译选项有关。
我于是想起了,我之前可能中途修改过ITK的编译选项,就是是否要编译动态链接库的选项。
具体的回答如下所示:
https://cmake.org/pipermail/insight-users/2004-March/007206.html
因为,ITK的编译和VTK的编译稍微有点差别。VTK的编译,默认是会既编译出Lib,又编译出DLL的。而ITK的编译,默认是不编译DLL的。
但是,当你勾选了”BUILD_SHARED_LIBS”后,它就会重新编译出dll。
这样,如果你先后编译选项选择得不一样时,生成的静态链接库Lib就是不一样的。这样会存在Lib的版本不一致的问题。而正是因为这个原因,而导致了在编译时,会出现如LNK 2001那样的错误。
所以,明确了问题的原因后。将原来编译好的lib先删除掉,然后重新生成Lib文件,再调试就应该没有问题了。
3. 参考链接:
C++编程中遇到的LNK2001连接错误http://www.cnblogs.com/lxw0109/archive/2012/05/02/LNK2001.html
完。
相关文章推荐
- eclipse 导入项目后,在工程图标上出现红叉,但是工程中的文件并没有提示错误的解决方法
- Eclipse中编译Android项目工程失败,提示: Error in an XML file: aborting build 解决办法
- 编译内核,提示内核过大错误解决方法
- 使用wxWidgets编译的Windows Mobile程序运行时提示“SHCreateMenuBar failed”错误的解决方法
- android导入项目@override编译错误解决方法
- android导入项目@override编译错误解决方法
- eclipse中导入android工程时因源工程java编译环境不同导致编译错误的解决方法
- 编译android4.0提示jdk版本错误--解决方法
- 编译他人的QT4项目提示qmake出错解决方法
- 项目文件.NET下编译C++代码时出现fatal error C1083: 无法打开包括文件:“xuhk_JNIHelloWorld.h”: No such file or directory错误的解决方法。
- myeclipse部署项目失败,错误信息提示文件被锁的解决方法。
- VC6.0常见编译错误提示附解决方法
- android导入项目@override编译错误解决方法
- vs2010建立win32 application 编译错误(用vc6.0建立此工程正常运行)解决方法
- 编译mysql提示错误:configure: error: No curses/termcap library found 解决方法
- Eclipse 编译 Android工程时,提示该错误 :Error generating final archive: Debug certificate expired on xxxxxx(日期) 解决办法
- VS2005新建项目找不到工程模版错误的解决方法。
- android中导入开源项目,常出现的导致编译错误的解决方法
- Enterprise Library 3.1 编译Data.NUnit和Data.VSTS报出缺少“NUnit”和“sqlceproviderfactory”错误提示 的解决方法
- Android JNI 编译正确 但是提示程序有错误无法运行 而且还看不到任何错误提示 的解决方法