在Netbeans 7.1.1中提升

时间:2013-04-27 16:07:54

标签: c++ windows boost netbeans shared-libraries

尝试运行以下内容:

        #include<iostream>
        #include<boost/filesystem/operations.hpp>

        namespace bfs=boost::filesystem;
        int main()
        {
        bfs::path p("second.cpp");
        if(bfs::exists(p))
        std::cout<<p.leaf()<<std::endl;
        }

我在cygwin中遇到了一些错误,因此我决定尝试netbeans,并使用following作为指导。我添加了文件系统Project -> properties -> Linker ->Libraries -> Add option -> Other -> -lfile_system的所有链接和以下内容,如上所述here。我使用#include<boost/any.hpp>运行了一个单独的测试,所以我目前还不怀疑我的提升没有安装相关。

我觉得它是“file_system”似乎很奇怪,所以我也试过“文件系统”,但无济于事。

当我按住Ctrl并点击#include<boost/filesystem/operations.hpp>时,我的netbeans会显示我的operations.hpp文件,所以看起来没问题(在内部正确链接,它可以“看到”我希望它看到的内容)。


安装boost的解决方案如下: 1 - 如果您有任何用于Visual Studio的路径变量,则应在安装期间临时更改变量。 This is a good guide。完成后,这一步就完成了。

2 - 下载并安装MinGW。这是一个非常简单的过程,您可以找到安装程序文件here

一旦你完成了这些事情(如果你和我的情况相同),你现在可以正确安装助推器。

Horay!

3 个答案:

答案 0 :(得分:8)

逐步使用Boost和cygwin

创建新项目

enter image description here

最好采用本教程中给出的名称完全。后来问:它不起作用,然后可以更容易找到。

我认为我不需要提及所有T:\当然必须替换为您的驱动器。

项目名称:Boost-cyg-Test

enter image description here

现在您的项目应该像

enter image description here

打开main.cpp
使用以下内容覆盖生成的代码。我们希望这一点,首先一切正常,但没有错误。

因此,请不要使用您自己的特殊代码 很难找到错误。然后告诉几个问题,得到:
我使用了自己的代码

#include <iostream>
#include <boost/filesystem.hpp>
using namespace std;
using namespace boost::filesystem;

int main()
  {
    path p("second.cpp");
      if (exists(p)) { std::cout<<p.leaf()<<std::endl; }
  }

在本节中,我们假设已经编译了“boost”。

转到工具 - &gt;选项

您的C ++代码帮助选项应如下所示。

enter image description here

如果不是这样,我们应该让Netbeans为我们创造。

enter image description here

添加新工具集

enter image description here

使用OK完成此对话框后,我们应该找到上面显示的设置。 (C ++代码帮助选项)。

将所有图书馆复制到正确的位置

让我们创建一个新文件夹'boost'。

enter image description here

使用搜索工具,在已编译的Boost文件夹中搜索*.a
我的Boost是使用shared option编译的,因此我们发现:

enter image description here

我们的简短App。我们只需要2个文件。

libboost_filesystem-gcc45-mt-d-1_53.dll.a
libboost_system-gcc45-mt-d-1_53.dll.a

但如果我们要复制两个文件,我们可以复制所有文件 因此,标记所有找到的.a文件并将其复制到刚创建的目录中 T:\cygwin\lib\boost

现在我们对.dll文件执行相同的操作 标记所有.dll个文件并将其复制到?:\cygwin\bin目录中 如果您只编译了静态库,则可以跳过这一点。

enter image description here

现在是修改项目设置的时候了 如您所见,我将源Boost文件夹放入cygwin

enter image description here

enter image description here

正如我们上面已经提到的,我们需要两个.a个文件 使用添加库导航到T:\cygwin\lib\boost并选择

libboost_filesystem-gcc45-mt-d-1_53.dll.a
libboost_system-gcc45-mt-d-1_53.dll.a

现在你会注意到这个名字被netbeans缩短为:

boost_filesystem-gcc45-mt-d-1_53.dll
boost_system-gcc45-mt-d-1_53.dll

enter image description here

这有点令人困惑。看起来好像.dll站在这里。但它实际上是一个.a文件。

在main.cpp中设置断点。现在我们开始调试。

enter image description here

我用箭头标记了重要部分,两个图书馆 找到所有的库,在完成后,在断点处停止。

输出:

enter image description here

为Cygwin构建Boost

对于想要使用共享库本身创建boost的所有人。

Download boost_1_53_0.zip

在?:\ cygwin目录中创建一个文件夹 boost_1_53_0

enter image description here

将zip文件解压缩到该目录中 它应该看起来像:

enter image description here

打开cmd窗口,cd到boost_1_53_0目录 要拥有干净的构建,我们需要一个只有cygwin homebin的PATH 在cmd类型中。

SET PATH=T:\cygwin;T:\cygwin\bin 

并测试路径。

PATH

enter image description here

输入

bootstrap.bat

enter image description here

类型

.\b2 --build-dir=T:\boost-cyg toolset=gcc variant=debug link=shared runtime-link=shared

一段时间后,构建完成 现在,您拥有我们在本教程中使用的相同环境。

如果您收到错误:gcc not found
?:\cygwin\bin文件夹中复制(不重命名),例如:(名称可能不同) i686-pc-cygwin-gcc-4.5.3.exegcc.exe

i686-pc-cygwin-g++-4.exeg++.exe

希望它对你有所帮助。

答案 1 :(得分:0)

你能粘贴编译时得到的错误吗? 我不习惯在Windows环境中编译程序,但我认为Jesse Good在评论中建议您有链接器错误。

您可以使用-lboost_filesystem代替lfile_system来解决此问题。

要了解你的lib是如何被调用的,你得到lib的名字(在我的unix环境中我有libboost_filesystem.so),去掉“lib”前缀和“.so”或“.a”后缀(在Windows环境中必须不同。)

答案 2 :(得分:0)

如果你的升级安装是正确的,并且你确定它是Unable to resolve identifier从项目的上下文菜单中尝试代码帮助 - >重新分析项目。它试图通过从头开始重新编译项目来恢复损坏的代码模型。如果没有锻炼,请尝试关闭IDE并删除代码模型缓存。

P.S。你有编译错误吗?