0

我想出了如何在编译时获得正确且当前版本的 GNU 作为目标。

现在,每当我尝试编译时。我会遇到大量错误,我认为这些错误与 C++ 库有关。我目前在我的 MacBook 上使用最新版本的 NetBeans 和最新安装的 Mountain Lion。

NetBeans 在该行下方显示一条红线:

#include <random>

说它找不到包含文件。

我可能会收到 50 行错误。我认为这是因为它无法检测到 C++ 中包含的库/头文件?这是错误消息的一部分

main.cpp:46:31: error: no matching function for call to 'getline(std::ofstream&)'
main.cpp:46:31: note: candidates are:
In file included from /usr/include/wchar.h:114:0,
             from /opt/local/include/gcc47/c++/cwchar:46,
             from /opt/local/include/gcc47/c++/bits/postypes.h:42,
             from /opt/local/include/gcc47/c++/iosfwd:42,
             from /opt/local/include/gcc47/c++/ios:39,
             from /opt/local/include/gcc47/c++/ostream:40,
             from /opt/local/include/gcc47/c++/iostream:40,
             from main.cpp:9:
/usr/include/stdio.h:449:9: note: ssize_t getline(char**, size_t*, FILE*)
/usr/include/stdio.h:449:9: note:   candidate expects 3 arguments, 1 provided
In file included from /opt/local/include/gcc47/c++/string:54:0,

我右键单击项目文件夹并点击“运行”,它给了我这个错误:

Undefined symbols for architecture x86_64:

“std::__1::basic_string, std::__1::allocator >::compare(char const*) const”,引用自:Ammunition::setElementData(std::__1::basic_string, std::__1::分配器 >, std::__1::basic_string, std::__1::allocator >) 在 Ammunition.o Armor::setElementData(std::__1::basic_string, std::__1::allocator >, std::__1 ::basic_string, std::__1::allocator >) 在 Armor.o Consumable::setElementData(std::__1::basic_string, std::__1::allocator >, std::__1::basic_string, std:: __1::allocator >) 在 Consumable.o Creature::setElementData(std::__1::basic_string, std::__1::allocator >, std::__1::basic_string, std::__1::allocator >) 在Creature.o Entity::setElementData(std::__1::basic_string, std::__1::allocator >, std::__1::basic_string, std::__1::allocator >) 在 Entity.o Item::在 Item.o 中的 setElementData(std::__1::basic_string, std::__1::allocator >, std::__1::basic_string, std::__1::allocator >) parseElement(std::__1::basic_istream > &, std::__1::vector >&, XMLSerializable*) in parser.o ... "std::_1:: _vector_base_common::__throw_length_error() const",引用自:_ ZNSt3 _16vectorIP4ItemNS_9allocatorIS2_EEE6assignIPS2_EENS_9enable_ifIXsr21__is_forward_iteratorIT_EE5valueEvE4typeES9_S9_ in Creature.o std::_ 1::vector >::void std:: o in Creature. , std::__1::allocator >, std::__1::allocator, std::__1::allocator > > >::__push_back_slow_path, std::__1::allocator > const&>(std::__1::basic_string , std::__1::allocator > const&) in Entity.o void std::_ 1::vector >:: _push_back_slow_path(XMLSerializable* const&) in parser.o void std::_ 1::vector >:: _push_back_slow_path CreatureFactory.o 中的 (Creature* const&) std::_1::vector, std::__1::allocator >, std::__1::allocator, std::__1::allocator > > >::allocate(unsigned long) in CreatureFactory.o std:: _1::vector >::__append(unsigned long, Tile const&) 在 DungeonLevel.o ...

你知道为什么会这样吗?它甚至与图书馆有关吗?

4

1 回答 1

0

你的问题是你的函数调用是错误的。

  1. 您当前正在调用getlineFILE指针一起使用的版本,这不是您想要的。这是编译器根据包含的标头找到的唯一一个。

  2. 您可能正在尝试从输入流中提取一行,对吗?所以试试这个。确保你#include <string>.

  3. 此外,您可能不想调用getline输出流......

- - 编辑 - -

您添加的错误看起来像您的库路径设置不正确......抱歉,如果无法访问系统,这很难修复,希望其他人能够帮助您。祝你好运。

于 2013-04-29T04:17:54.743 回答