gpt4 book ai didi

c++ - Qt + VS2010 编译器 : How to create a simple project that would use compiled for VC staticaly linked boost?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:32:32 24 4
gpt4 key购买 nike

如何创建一个简单的项目,将使用为 VC 静态链接的 boost(有点像 C:/boost)编译?我的项目文件应该是什么样子?

我尝试添加到 .pro

INCLUDEPATH += C:/BOOST/include/boost-1_49
DEPENDPATH += C:/BOOST/lib
LIBS += -LC:/BOOST/lib -llibboost_system-vc100-mt-sgd-1_49 -llibboost_thread-vc100-mt-sgd-1_49

但我得到:

msvcprtd.lib(MSVCP100D.dll):-1: ERROR: LNK2005: "public: __thiscall std::_Container_base12::~_Container_base12(void)" (??1_Container_base12@std@@QAE@XZ) already defined in libboost_system-vc100-mt-sgd-1_49.lib(error_code.obj)

msvcprtd.lib(MSVCP100D.dll):-1: ERROR: LNK2005: "public: __thiscall std::_Container_base12::_Container_base12(void)" (??0_Container_base12@std@@QAE@XZ) already defined in libboost_system-vc100-mt-sgd-1_49.lib(error_code.obj)

msvcprtd.lib(MSVCP100D.dll):-1: ERROR: LNK2005: "public: void __thiscall std::_Container_base12::_Orphan_all(void)" (?_Orphan_all@_Container_base12@std@@QAEXXZ) already defined in libboost_system-vc100-mt-sgd-1_49.lib(error_code.obj)

:-1: WARNING: LNK4098: defaultlib 'LIBCMTD' conflicts with use of other libs; use /NODEFAULTLIB:library

debug\loader.exe:-1: ERROR: LNK1169: one or more multiply defined symbols found

当我尝试编译类似的东西时:

#include <QtGui/QApplication>
#include <iostream>

#include <boost/filesystem.hpp>

int main(int argc, char *argv[])
{
boost::filesystem::path p;
}

所以我想知道如何更改我的 .proo 文件以使用使用 VS 编译器的 Qt Creator 正确链接到为 VC 编译的静态 boost ?

最佳答案

如果您使用 --runtime-link=static 标志构建 boost,那么它们是针对静态 CRT 库编译的,即使用 /MT(和 /MTd 用于调试)编译器标志。

您的错误表明您的项目正在尝试链接动态 CRT 库,即使用 /MD/MDd。如果这些设置在您的 .pro 文件中,它们将成为 QMAKE_CXXFLAGS_RELEASEQMAKE_CXXFLAGS_DEBUG 变量的一部分。但是,它们可能根本没有列出 - 我认为默认设置是使用动态 CRT 库。

您项目中的所有库都需要链接到同一个 CRT。

您要么需要在构建 boost 时使用 --runtime-link=shared(您仍然可以使用 --link=static 通过此选项创建静态 boost 库though), 或者在你的 . pro 文件。

关于c++ - Qt + VS2010 编译器 : How to create a simple project that would use compiled for VC staticaly linked boost?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10331639/

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