Jac*_*oen 9 c++ eclipse macos boost
我一直在尝试使用eclipse使用boost文件系统库来设置C++项目.我按照这些指示在我的系统上安装了boost.相当的方向
这似乎很好,没有错误.然后我启动了eclipse并创建了一个名为test的新测试项目,其中包含一个名为test.cpp的文件.其中的代码是:
#include <stdio.h>
#include <boost/filesystem.hpp>
int main() {
boost::filesystem::path path("/Users/schoen"); // random pathname
bool result = boost::filesystem::is_directory(path);
printf("Path is a directory : %d\n", result);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这只是一些简单的事情,以确保它都正确设置.当然我在这一点上试图编译它失败了.做了一些谷歌搜索,发现这个网站.它说通过转到项目属性并添加"boost_filesystem"将boost库添加到链接器.我试过这个,好吧它没用.
有人能指出我正确的方向还是给我一个如何在Eclipse项目中设置Boost的提示?
我是C++和Eclipse的新手,我的大部分经验都是使用Netbeans的Java.所以此刻我很迷茫.
UPDATE
我只想根据给出的答案更新我尝试过的内容.
根据Alex的建议,我将boost_system和boost_filesystem添加到链接器列表中.我仍然得到相同的编译器错误.
根据rve的建议,我将增强库的路径添加到了库搜索路径.当这不起作用.我清除了链接器列表并仅使用库搜索路径进行了尝试.这也行不通.
然后我清除了库搜索路径.然后,我在链接器窗口上手动编辑命令为'g ++ -L/Users/jacobschoen/Library/boost_1_45_0/stage/lib -lboost -lboost_filesystem'.这也行不通.
在所有这些中,我尝试将boost的路径设置为'/ Users/jacobschoen/Library/boost_1_45_0'和'/ Users/jacobschoen/Library/boost_1_45_0/stage/lib'.都没有奏效.
根据要求,上述代码的编译器错误是:
**** Build of configuration Debug for project test ****
make all
Building file: ../src/test.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/test.d" -MT"src/test.d" -o"src/test.o" "../src/test.cpp"
../src/test.cpp:10:32: warning: boost/filesystem.hpp: No such file or directory
../src/test.cpp: In function 'int main()':
../src/test.cpp:13: error: 'boost' has not been declared
../src/test.cpp:13: error: expected `;' before 'path'
../src/test.cpp:14: error: 'boost' has not been declared
../src/test.cpp:14: error: 'path' was not declared in this scope
make: *** [src/test.o] Error 1
Run Code Online (Sandbox Code Playgroud)
如果有人有任何进一步的建议,我仍在尝试.
第二次更新 根据rholmes的建议,我添加了一个包含库以及链接器列表和库搜索路径.所以现在编译错误是:
**** Build of configuration Debug for project test ****
make all
Building target: test
Invoking: MacOS X C++ Linker
g++ -L/Users/jacobschoen/Library/boost_1_45_0 -o "test" ./src/test.o -lboost_system -lboost_filesystem
ld: library not found for -lboost_system
collect2: ld returned 1 exit status
make: *** [test] Error 1
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
Jac*_*oen 16
只是想明确一下实际工作的内容,因为它是从几个答案拼凑而成的.
./bootstrap.sh
./bjam
(这需要一段时间,所以去吸烟喝一杯咖啡)boost_system
和boost_filesystem
.在底部,它应该是'图书馆搜索路径(-L)'.在这里,您希望将路径/ stage目录放在提取boost下载的位置.它应该类似于下面的内容:现在一切都应该编译出来并解决问题,如果你需要使用任何其他的boost库,那么只需将它添加到boost_filesystem和boost_system所在的链接器部分即可.请享用.
现在不确定您在 Eclipse 中的何处执行此操作,但在 Eclipse 的包含路径下应该是主 boost 目录的路径(/Users/jacobschoen/Library/boost_1_45_0?)。我认为编译器行应该包含如下内容:
调用:GCC C++ 编译器
g++ -I/Users/jacobschoen/Library/boost_1_45_0 -O0 -g3 -Wall -c -fmessage-length=0 -MMD (等..)
更新:看看我的系统,你的链接器路径可能更合适:
-I/用户/jacobschoen/库/boost_1_45_0/stage/lib
当然,这取决于您如何安装和构建 boost——这是我最近尝试的完整源代码构建。根据您获得提升的方式,这可能会有所不同,也可能不会有所不同。我最近在 64 位 Mac 上重新进行了增强,但还没有太多时间尝试......
归档时间: |
|
查看次数: |
11553 次 |
最近记录: |