error LNK2001: 无法解析的外部符号 “__declspec(dllimport) public等的常见解决方案小结

  今天晚上想把自己写的一个sfm工程从dubug模式改成release模式(在vs2019环境下)。按理说,只要把release模式下的include目录、库目录以及链接库的名字配好就可以了。但是我在配好以后,出现了很多个“error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: class std::basic_ios

  1. 在配置include目录、库目录以及链接库的名字过程中出错。比如路径错误(有些库debug和release文件存放在不同路径下),lib文件名称错误(很多库的lib文件是有分debug版本和release版本的,比如ceres库的debug版lib文件名称为ceres-debug.lib,而release版名称为ceres.lib;opencv库的debug版lib名称为opencv_world450d.lib,而release版为opencv_world450.lib)。所以在设置各种路径的时候,要仔细检查,避免出错。一个解决该问题的教程链接
  2. 运行库设置出错。有时候vs默认的运行库设置与你具体项目所用到的运行库设置并不一致,因此也会报无法解析的外部符号这个错误。打开项目属性页,如下图所示:error LNK2001: 无法解析的外部符号 “__declspec(dllimport) public等的常见解决方案小结_第1张图片

   如果是debug模式,则选择多线程调试DLL(/MDd),如果是release模式,则选择多线程DLL(/MD)。

   关于无法解析的外部符号这个问题,常见的解法就是上述两种了。

你可能感兴趣的:(vs,debug,c++,visual,studio,debug)