试图链接升压1.52螺纹(Trying to link Boost 1.52 thread)

2019-07-19 04:52发布

我试图编译我的程序,但它不会链接所有。 我指定的路径升压LIB文件和链接器仍然抱怨。 下面是我得到了链接错误:

1>Edproj.obj : error LNK2001: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::system_category(void)" (?system_category@system@boost@@YAABVerror_category@12@XZ)
1>Edproj.obj : error LNK2001: unresolved external symbol "class boost::system::error_category const & __cdecl boost::system::generic_category(void)" (?generic_category@system@boost@@YAABVerror_category@12@XZ)
1>Edproj.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall boost::detail::thread_data_base::~thread_data_base(void)" (??1thread_data_base@detail@boost@@UAE@XZ)
1>Edproj.obj : error LNK2001: unresolved external symbol "void __cdecl boost::throw_exception(class std::exception const &)" (?throw_exception@boost@@YAXABVexception@std@@@Z)
1>Edproj.obj : error LNK2001: unresolved external symbol "public: void __thiscall boost::thread::detach(void)" (?detach@thread@boost@@QAEXXZ)
1>Edproj.obj : error LNK2001: unresolved external symbol "public: void __thiscall boost::thread::join(void)" (?join@thread@boost@@QAEXXZ)
1>Edproj.obj : error LNK2001: unresolved external symbol "private: void __thiscall boost::thread::start_thread(void)" (?start_thread@thread@boost@@AAEXXZ)
1>Edproj.obj : error LNK2001: unresolved external symbol "bool __cdecl boost::this_thread::interruptible_wait(void *,struct boost::detail::timeout)" (?interruptible_wait@this_thread@boost@@YA_NPAXUtimeout@detail@2@@Z)

BOOST_LIB_DIAGNOSTIC回报

1>  Linking to lib file: libboost_thread-vc100-mt-s-1_52.lib
1>  Linking to lib file: libboost_date_time-vc100-mt-s-1_52.lib
1>  Linking to lib file: libboost_system-vc100-mt-s-1_52.lib
1>  Linking to lib file: libboost_chrono-vc100-mt-s-1_52.lib

更多信息:

我运行64位Windows 8 Pro和我编译使用下列选项提振

bjam --build-type=complete --toolset=msvc10.0 address-model=64 architecture=x86 variant=debug,release threading=multi link=static runtime-link=static

谁能告诉我什么是错?

更新:

改变以提高1.51它摆脱了7出的那些连接错误的8后,但是这一个是依然执着

error LNK2001: unresolved external symbol "void __cdecl boost::throw_exception(class std::exception const &)" (?throw_exception@boost@@YAXABVexception@std@@@Z)

我不明白这到底是怎么回事。 这一个是从boostpro 32位的安装程序。 它不能有话跟我的源文件,对不对?

更新:

好吧,我已经解决了这个问题提升1.51。 在属性页>> C / C ++ >>代码生成>>原来启用C ++异常被关闭我。

好。 我会尝试看看是否相同的设置解决这个问题升压1.52。 随后将更新。

Answer 1:

我有同样的问题之前,我建立与直接运行bootstrap.bat默认参数提升库。

如果你在项目中使用的boost ::系统 ,你应该使用和任命的boost ::系统库的x86或x64版本。

你可以重新编译升压LIB这种蝙蝠,保存这些提高的根文件夹,并在CMD窗口(不要双击!)运行:

call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" x86

cd boost_1_60_0
call bootstrap.bat

rem Most libraries can be static libs
b2 -j8 toolset=msvc-14.0 address-model=64 architecture=x86 link=static threading=multi runtime-link=shared --build-type=minimal stage --stagedir=stage/x64
b2 -j8 toolset=msvc-14.0 address-model=32 architecture=x86 link=static threading=multi runtime-link=shared --build-type=minimal stage --stagedir=stage/win32

pause

有关详细信息,你可以看到这篇文章: https://studiofreya.com/2015/12/19/how-to-build-boost-1-60-with-visual-studio-2015/



Answer 2:

感谢在我看来就像它没有自动连接正确。

Include path is boost152/ only
Library path is boost152/stage/lib


Answer 3:

一定要正确的目录添加到链接的属性。

阅读此篇进一步细节升压链接错误:无法解析的外部符号“类boost ::系统:: error_category常量和__cdecl的boost ::系统:: get_system_category(无效)”

你也得加入这个路径进入链接除了目录:

$(BOOST_ROOT)\ bin.v2 \库\螺纹\建立\ MSVC-xx.0 \发布\地址模型-64 \链接静态\线程的多

其中xx是你的Visual Studio版本



Answer 4:

下面这两个定义,用我的链接搞乱了,扔一个美丽的“LNK2001:无法解析的外部符号”错误。 你有没有在你的代码,然后什么地方?

//#define BOOST_FILESYSTEM_NO_DEPRECATED
//#define BOOST_FILESYSTEM_NO_LIB


文章来源: Trying to link Boost 1.52 thread