11

我在 Ubuntu 中创建了一个 Qt 项目,一切都很顺利。但是,我还需要在 Windows 上部署它。它使用 Boost 库(大问题)。

我一直在寻找几个小时来找到解决方案,但没有运气。我尝试安装 Boost 库并将其与 mingw 链接;我想我错过了什么。这是我所做的并下载了最新版本:

1) 运行 .\bootstrap
2) 然后 .\b2 --prefix=C:\boost install

可惜没有正确安装。我只有 2 个文件夹(bin 和 share),但没有标题。

但是,在这里(http://nuwen.net/)我找到了一个包(Mingw+Boost 和其他库)。这有我需要的一切。

现在我认为问题是 .pro 文件,因为我有很多未定义的引用。这是我尝试过的所有内容的 .pro 文件(一些评论): http: //pastebin.com/pBFMTAd8

感谢您的帮助!

4

2 回答 2

12

我确实自己解决了这个问题。这就是我的做法。首先,需要使用与 Qt 一起使用的相同编译器编译 boost 库。
如果您使用的是 msvc,那么您很幸运,因为 Boost 人帮了您一个忙,并为您编译了库。你可以在这里下载它们:http: //sourceforge.net/projects/boost/files/boost-binaries/
如果您使用的是 mingw(它与 Qt 捆绑在一起),您可以这样做:

  • 将 mingw 编译器添加到 Windows PATH 变量中:
    ~ 转到控制面板并搜索系统;
    ~ 通过附加 ';' 将 mingw 的路径(例如 C:\Qt\Tools\mingw\bin)添加到 PATH 变量 到您的路径(例如:“;C:\Qt\Tools\mingw\bin”)
  • 编译 Boost 库:
    ~ 解压 boost 档案
    ~ 打开命令行窗口,进入解压后的 boost 文件夹,然后进入文件夹 tools/build/v2/engine
    ~ 你已经使用 mingw 工具集构建安装程序: .\build --toolset= mingw
    ~ 这将在文件夹 bin.ntx86 或类似文件夹中创建 2 个文件;将文件 bjam 和 b2 复制到解压后的 boost 文件夹中;
    ~ 现在进入 boost 文件夹并开始构建它:.\b2 --toolset=mingw --build-type=complete 阶段(有很好的教程可以与 eclipse 一起安装它:http: //theseekersquill.wordpress.com/2010 /08/24/howto-boost-mingw/ )
    注意:这需要几个小时,所以可能想看电影或同时做任何你想做的事情。但是,您可以选择通过在构建命令中添加另一个参数来加快速度:-j N,其中 N 是您的处理器有多少个内核。
  • 构建完成后,您现在可以在 Qt 中链接库。为此,您需要修改 .pro 文件。首先你必须告诉 Qt 头文件的位置,你可以通过添加:
    INCLUDEPATH += path_to_boost_folder,例如:INCLUDEPATH += C:/boost_1_54_0
    ~ 如果你正在使用需要链接的库,例如系统和文件系统,您必须分别链接它们:
    LIBS += "C:/boost_1_54_0/stage/lib/libboost_filesystem-mgw48-1_54.a",
    LIBS += "C:/boost_1_54_0/stage/lib/libboost_system-mgw48-1_54.一种”
  • 修改 .pro 文件后,运行 qmake,然后重新构建。

希望这对你也有效!

更新:文件夹层次结构发生了变化。对于构建库,应该阅读与每个版本相关的文档和Boost.Build 的文档。从根文件夹构建库更容易(Building Boost 1.52 with MinGW):

C:\boost_1_60_0> bootstrap.bat mingw  
C:\boost_1_60_0> .\b2 --toolset=gcc -j N --build-type=complete
于 2013-09-11T13:56:13.863 回答
0

构建 boost 不会放置标头,标头是供开发人员在创建新代码时使用的。安装的目录是分发的二进制文件。

http://www.boost.org/doc/libs/1_54_0/more/getting_started/windows.html#prepare-to-use-a-boost-library-binary

这将安装您在运行时(而不是编译时)使用的库。因为您将此 bin 文件夹添加到您的路径中,这就是为什么在使用 boost 运行应用程序构建时它会运行并且不会说“找不到 xxx.dll”

于 2013-09-01T20:38:40.560 回答