LNK1104错误与Visual Studio 2017中的示例CMake项目

时间:2017-03-10 09:26:47

标签: visual-studio cmake

我决定尝试在VS2017中提供内置的CMake支持,而不是弄清楚为什么我们的多库,多可执行项目在使用的手工制作的CMakeLists.txt文件中遇到find_package问题多年来,我决定首先尝试一个简单的项目,来自CMake wiki的FooBar示例:https://cmake.org/Wiki/CMake/Tutorials/How_to_create_a_ProjectConfig.cmake_file

这个项目创建了一个共享库foo和一个链接到这个库的可执行栏,就像它们来的一样简单。我解压缩了项目,用File->Open->Folder打开它,CMake配置开始并成功。我注意到的第一件事是没有更多Build菜单,没有F7快捷方式来构建我的项目,而是我必须选择CMake->Build CMakeLists.txt :-( Debug菜单同样发育不良,快速调试就是我使用Visual的原因工作室首先。这已经看起来很糟糕,但它变得更糟:

使用此输出构建失败:

foo.vcxproj -> C:\Users\Enno\AppData\Local\CMakeBuild\639e9ecd-8891-eb38-b26b-ce84aa448eea\build\x86-Debug\foo\Debug\foo.dll
C:\Users\Enno\AppData\Local\CMakeBuild\639e9ecd-8891-eb38-b26b-ce84aa448eea\build\x86-Debug\bar\LINK : fatal error LNK1104: cannot open file '..\foo\Debug\foo.lib' 

思想:

  1. 构建目录是否在%APPDATA%?那会很烦人。
  2. 该位置确实没有.lib文件,只有.dll。
  3. 此时我对VS2017可能不是问题感到怀疑,但可能与示例项目本身或CMake有关。所以我使用cmake.exe -G "Visual Studio 14" .为VS2015创建了一个解决方案,我在VS2015和Voila中打开了!我收到了同样的错误消息。

    是否有关于SO的CMake天才可以告诉我这个项目有什么问题?

1 个答案:

答案 0 :(得分:0)

事实证明:CMake wiki上的示例首先不可移植,因此这与Visual Studio的内置CMake支持无关。它没有考虑到Windows需要DLL的导出库。将正确的__declspec(dllexport)咒语添加到foo.h可以解决错误消息。

我在此链接上找到了有关Windows上共享库所需的所有信息: http://gernotklingler.com/blog/creating-using-shared-libraries-different-compilers-different-operating-systems/