没有Boost DLL,Visual C ++可执行文件将无法运行

时间:2018-12-10 22:30:45

标签: c++ visual-studio boost cmake

我正在使用Visual Studio作为构建系统,使用C++来编译CMake项目。

此外,我正在针对Boost库进行链接。但是,如果在Boost环境变量中找不到以下DLL PATHboost_filesystem-vc141-mt-x64-1_69.dllboost_iostreams-vc141-mt-x64-1_69.dll,则输出可执行文件将不会运行。

According to the documentation,我尝试使用/MT(“使应用程序使用运行时库的多线程静态版本”)和/MD(“导致应用程序以使用运行时库的特定于多线程和DLL的版本”)编译标志,但除了影响文件大小外,对DLL的{​​{1}}依赖性也没有改变。

我还指定了以下Boost变量:

CMake

这也没有强制针对set(BOOST_USE_STATIC_LIBS ON) set(Boost_USE_MULTITHREADED ON) set(Boost_USE_STATIC_RUNTIME OFF) 库的静态链接。我想生成一个不动态依赖于Boost而是仅依赖于核心Boost运行时库的可执行文件,以便任何其他计算机都可以运行它而无需交付C++或任何Boost Boost个。如果文件大小增加很多完全没问题。

Adding the following preprocessor define to main.cpp也不起作用:

DLL

我该如何真正构建独立的可执行文件?

1 个答案:

答案 0 :(得分:0)

事实证明,我只是拼错了设置Boost才能使用静态库:

set(Boost_USE_STATIC_LIBS ON)

CMake变量区分大小写,因此用大写字母拼写Boost无效。

预编译的Windows二进制文件已经包含了所需的所有内容,因此,如果您只想链接静态库,则无需进行编译。