尝试运行以下内容:
#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!
答案 0 :(得分:8)
创建新项目
最好采用本教程中给出的名称完全。后来问:它不起作用,然后可以更容易找到。
我认为我不需要提及所有T:\
当然必须替换为您的驱动器。
项目名称:Boost-cyg-Test
现在您的项目应该像
打开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 ++代码帮助选项应如下所示。
如果不是这样,我们应该让Netbeans为我们创造。
添加新工具集
使用OK完成此对话框后,我们应该找到上面显示的设置。 (C ++代码帮助选项)。
将所有图书馆复制到正确的位置
让我们创建一个新文件夹'boost'。
使用搜索工具,在已编译的Boost文件夹中搜索*.a
我的Boost
是使用shared option
编译的,因此我们发现:
我们的简短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
目录中
如果您只编译了静态库,则可以跳过这一点。
现在是修改项目设置的时候了 如您所见,我将源Boost文件夹放入cygwin
和
正如我们上面已经提到的,我们需要两个.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
这有点令人困惑。看起来好像.dll
站在这里。但它实际上是一个.a
文件。
在main.cpp中设置断点。现在我们开始调试。
我用箭头标记了重要部分,两个图书馆 找到所有的库,在完成后,在断点处停止。
输出:
对于想要使用共享库本身创建boost的所有人。
在?:\ cygwin目录中创建一个文件夹
boost_1_53_0
将zip文件解压缩到该目录中 它应该看起来像:
打开cmd窗口,cd到boost_1_53_0
目录
要拥有干净的构建,我们需要一个只有cygwin home
和bin
的PATH
在cmd类型中。
SET PATH=T:\cygwin;T:\cygwin\bin
并测试路径。
PATH
输入
bootstrap.bat
类型
.\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.exe
至gcc.exe
和
i686-pc-cygwin-g++-4.exe
至g++.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。你有编译错误吗?