2010-05-05 84 views
4

在使用某些Boost库时,哪里可以找到用于链接我的程序的lib文件? 决定试试它的线程功能,但我得到缺少关于Boost的详细信息(.lib文件)

错误6致命错误LNK1104:以后我不能 打开文件 'libboost_thread-VC90-MT-GD-1_42.lib' InterviewPractice

包括

错误6致命错误LNK1104:无法 打开文件 'libboost_thread-VC90-MT-GD-1_42.lib' InterviewPractice

我找不到在哪里得到.lib文件,以便在boost网站上正确链接? 任何提示? :)

+0

你读过http://www.boost.org/doc/libs/1_55_0/more/getting_started/index.html吗? – 2014-07-04 00:49:22

回答

6

需要构建一些Boost库(例如,使用操作系统特定功能的库)。您可以build them yourself,或下载pre-built package

+0

感谢您的信息。我最好安排一些时间来建立所有这些图书馆。 xD 我敢打赌它需要一段时间。 – bobber205 2010-05-05 18:47:24

+1

@ bobber205:抓住预先构建的软件包并安排一大堆时间来弄清楚如何构建整个boost分发。第一次在Windows下构建可能需要几天的时间。预建的软件包将帮助您快速启动并运行。 – 2010-05-05 18:51:46

+1

需要一点时间,但几天?你在做什么? :D – KTC 2010-05-05 19:00:46

0

这一切都取决于您正在使用的操作系统/编译器。

我建议你下载boost源代码并学习如何构建Boost。

+0

使用Windows 7和VS2008。 – bobber205 2010-05-05 20:55:22

2

我使用的一种替代解决方案是使用您正在使用的增强位创建您自己的包装项目。通常在VS.Net中,这只是添加boost/libs/blah子目录中的cpp文件而已。它们编译得很干净,所以你通常不需要做任何其他设置你的项目。如果您想从SCM自动构建并且您不想检查二进制文件,我发现这种技术非常有用。由于您只需构建所需的位,因此速度也非常快。另一个优点是创建与您的项目相关的配置更容易,例如调试/发布,静态/动态,32/64位。但一个问题是,当您构建项目时,需要通过定义BOOST_ALL_NO_LIB来禁用自动链接选项。

或者,您需要使用jam工具为您需要的配置构建原始库。

+1

结合这一点,bcp工具(在boost分发中提供)将复制所需的boost包含。如果你不想在你的SCM中增加所有的功能,这可以提供帮助。 – KeithB 2010-05-05 21:24:37

+0

有用的提示 - 我从来不知道这个工具 – 2010-05-06 08:23:57

0

此问题是由于Boost安装默认情况下不安装线程库所致。您必须在安装期间专门选择线程库。因此,重新运行安装并选择线程库并选择您的编译器的版本以下载适当的文件。在这种情况下,对于文件“'libboost_thread-vc90-mt-gd-1_42.lib”,您需要为升级库版本1.42选择多版本VC++编译器9.0调试的多线程。

我希望这有助于...

0

我打了使用boost版本1.44和预建安装相同的链接错误。我解压缩“libboost_data_time_vc100-mt-gd-144.zip”,其中只包含缺少的.lib,这似乎解决了这个问题。

0

.lib文件通常嵌套在一个名为stage文件夹下,所以你可能需要在附加库目录部分与boost/stage/lib更换boost/lib下你的项目属性。 this tutorial的第6节和6.1节描述了该过程,但不包括Boost的stage文件夹。

您也可以为破损的.lib文件做一个file search以了解位置。