gpt4 book ai didi

c++ - 使用 boost 库在 Visual Studio 2010 中编译完整的静态可执行文件

转载 作者:行者123 更新时间:2023-11-30 05:26:58 25 4
gpt4 key购买 nike

我正在尝试使用 MS Visual C++ - Express 编译一个完全独立的静态可执行文件。

我使用的是 boost 库,它们也是用静态链接编译的:

b2 --toolset=msvc-10.0 --link=static runtime-link=static variant=release threading=multi

在 Visual Studio 中我有这些设置:

General: MFC use static library

VC++ Directories -> Include Directory: PATH TO BOOST FILES

C/C++ -> Code Generation: Runtime Library Muthithreaded

C/C++ -> Precompiled Header: Don't use

Linker-> Input: Additional dependencies: FULL PATH TO ALL USED BOOST LIB FILES (C:\boost_1_61_0\stage\lib\libboost_system-vc100-mt-gd-1_61.lib....)

我可以编译动态链接的可执行文件,但如果我尝试编译静态可执行文件,我会收到此错误:

1>LINK : fatal error LNK1104: cannot open file 'libboost_system-vc100-mt-sgd-1_61.lib'

问题出在哪里?

最佳答案

属性不应以 -- 为前缀,因此您的构建命令应类似于:

b2 toolset=msvc-10.0 link=static runtime-link=static variant=release threading=multi

此外,您似乎是在 Debug模式下构建项目,因此链接器正在寻找 boost 库的调试版本。同时构建调试和发布版本可能是个好主意,这样您就可以在调试和 Release模式下构建您的项目:

b2 toolset=msvc-10.0 link=static runtime-link=static variant=debug,release threading=multi

这将生成每个库的两个版本,“libboost_foo-vc100-mt-s-1_61.lib”和“libboost_foo-vc100-mt-sgd-1_61.lib”。 “s”版本是发布库,“sgd”版本是调试库。查看boost docs了解每个字符的确切含义。


编辑:再次查看您的设置后,您似乎已经手动指定了您正在使用的所有 boost 库的路径。除了我上面提到的有关构建属性的内容外,您还应该在 VC++ Directories -> Library Directories 下指定库搜索路径。 .在 Visual Studio 中,boost 将使用 #pragma comment(lib, ...) 指定它需要哪些库预处理器指令。您可以通过定义 BOOST_<lib>_NO_LIB 为单个库禁用此行为。在包含其标题之前,或通过定义所有库 BOOST_ALL_NO_LIB .

关于c++ - 使用 boost 库在 Visual Studio 2010 中编译完整的静态可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37539480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com