如何在Windows上的CodeBlocks中构建和配置boost.thread

时间:2012-09-16 16:17:13

标签: c++ boost mingw codeblocks boost-thread

我只是想问这个非常微不足道的问题,我不知道这是否是正确的问题,或者之前是否曾经问过这个问题,我知道这可以通过访问有关boost的文档来解决。但我真的迷失了,并在boost.thread中配置C::B

我只是一个初学者,目前正在学习如何制作Windows应用程序,而不是认真,只是为了学习目的。我只是注意到我真的需要多线程的概念才能让它工作。所以我决定使用Boost库,我完全按照wiki的说法来构建库,我认为我没有做错。

我从文档中运行了几个代码,这些代码只是标题,并且它运行完美,但是有一些库包含在boost中,需要特殊处理,包括boost.thread,我遇到了困难。我知道#included包含在我的文件中不会使Boost.thread有效。我从online tutorial(我在那里找到的多线程页面上的第一个代码)中找到的这个基本代码中得到了错误,产生了一个错误,上面没有这样的文件目录。

||=== Multithreading_sample, Debug ===|
C:\Documents and Settings\Owner\Desktop\Programming\C++\Dev          
C++\App\Multithreading_sample\Multithreading_sample\main.cpp|1|boost/thread.hpp: No such 
file or directory|
C:\Documents and Settings\Owner\Desktop\Programming\C++\Dev    
C++\App\Multithreading_sample\Multithreading_sample\main.cpp||In function `void   
wait(int)':|
C:\Documents and Settings\Owner\Desktop\Programming\C++\Dev  
C++\App\Multithreading_sample\Multithreading_sample\main.cpp|6|error: `boost' has not   
been declared|
C:\Documents and Settings\Owner\Desktop\Programming\C++\Dev 
C++\App\Multithreading_sample\Multithreading_sample\main.cpp|6|error: `boost' has not 
been declared|
C:\Documents and Settings\Owner\Desktop\Programming\C++\Dev    
C++\App\Multithreading_sample\Multithreading_sample\main.cpp|6|error: `seconds' cannot 
be used as a function|
C:\Documents and Settings\Owner\Desktop\Programming\C++\Dev   
C++\App\Multithreading_sample\Multithreading_sample\main.cpp|6|error: `sleep' undeclared 
(first use this function)|
C:\Documents and Settings\Owner\Desktop\Programming\C++\Dev 
C++\App\Multithreading_sample\Multithreading_sample\main.cpp|6|error: (Each undeclared 
identifier is reported only once for each function it appears in.)|
C:\Documents and Settings\Owner\Desktop\Programming\C++\Dev   
C++\App\Multithreading_sample\Multithreading_sample\main.cpp||In function `int main()':|
C:\Documents and Settings\Owner\Desktop\Programming\C++\Dev  
C++\App\Multithreading_sample\Multithreading_sample\main.cpp|20|error: `boost' has not 
been declared|
C:\Documents and Settings\Owner\Desktop\Programming\C++\Dev   
C++\App\Multithreading_sample\Multithreading_sample\main.cpp|20|error: expected `;' 
before "t"|
C:\Documents and Settings\Owner\Desktop\Programming\C++\Dev   
C++\App\Multithreading_sample\Multithreading_sample\main.cpp|20|warning: statement is a   
reference, not call, to function `thread'|
C:\Documents and Settings\Owner\Desktop\Programming\C++\Dev   
C++\App\Multithreading_sample\Multithreading_sample\main.cpp|20|warning: statement has 
no effect|
C:\Documents and Settings\Owner\Desktop\Programming\C++\Dev   
C++\App\Multithreading_sample\Multithreading_sample\main.cpp|21|error: `t' undeclared 
(first use this function)|
||=== Build finished: 9 errors, 2 warnings ===|

并且我知道它没有检测到我的boost.thread库,我不知道这部分应该去哪里。我搜索了谷歌,但我认为我最好的选择是单独构建1boost.thread1,如here所示,我不知道下一步该做什么。

  • 我的提升库版本是1.51.0我的C :: B在Windows XP上运行10.05,我想在我的CodeBlocks中使用boost.thread。我想做的就是粘贴代码并运行它,看看它是如何工作的。
  • 我的MinGW版本是3.4.2

1 个答案:

答案 0 :(得分:1)

最后,经过几天的研究和谷歌搜索并通过网络交叉引用大量解决方案后,我终于在我提供的网站上制作了第一个代码。

首先我做的是我将extract_directory作为全局变量中内置字段的基础。然后我去了项目选项,我点击了层次结构和搜索目录中项目的名称,我在编译器选项卡上添加了$(#boost.include),在链接器选项卡上添加了$(boost)\ stage \ lib。

我从头开始重新构建boost(esp构建boost.thread库),然后我再次关注文档中写的内容,然后我终于得到一些错误,说Boost :: system上的未定义引用错误。我解决这个问题的方法是将我的项目链接到boost.system(在我的情况下是我的stage \ lib文件夹中的文件)。

我在我的项目上链接了这个库 libboost_system-mgw34-MT-1_51.a

当我编译程序时,发生了一个错误,说明对boost :: chrono的未定义引用,库名是:

libboost_chrono-mgw34-MT-1_51.a

我也将我的项目与它联系起来,就像我为boost :: system做的那样。

它编译!没有任何警告,我从这次经验中学到的是,我必须寻找所需的库,到目前为止我所做的只是链接boost.thread库和错误只是继续说未定义的引用错误来boost.system我不知道它与boost线程或其他库有关(这是我在搞砸之前遇到的第一个错误)。我认为每个boost库中有多个函数调用,这些函数调用在另一个库中,因此我还需要与它们链接,这也需要这样的调用。

谢谢各位回复。