1

我只是想问这个非常琐碎的问题,我不知道这是否是正确的问题,或者以前是否有人问过这个问题,我知道这可以通过访问关于 boost 的文档来解决。但我真的迷路了,被困boost.threadC::B.

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

我从文档中运行了一些代码,这些代码仅是标题,并且可以完美运行,但是 boosts 中包含的库需要某种特殊处理,包括boost.thread我遇到的困难。我知道#includ-ing 在我的文件中不会Boost.thread起作用。我从在线教程中找到的这个基本代码(我在那里找到的多线程页面上的第一个代码)中得到了错误,产生了一个错误,表明没有这样的文件目录。

||=== 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,如下所示我不知道下一步该做什么。

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

1 回答 1

1

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

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

我重新从头开始重建 boost(尤其是构建 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 库中有多个函数调用位于另一个库中,所以我必须与它们链接,这也需要这样的调用。

谢谢你们的友好回应。

于 2012-09-19T06:13:14.990 回答