2

我是 ogre3D 的初学者,我正在 Ogre3D 中构建 mi 第一个程序,但是当我尝试编译程序时出现此错误:

In function `main':
test.cpp:(.text+0x14): undefined reference to `std::allocator<char>::allocator()'
test.cpp:(.text+0x30): undefined reference to `std::basic_string<char,                                                                 
std::char_traits<char>, std::allocator<char> >::basic_string(char const*, 
std::allocator<char> const&)'

test.cpp:(.text+0x40): undefined reference to `std::allocator<char>::allocator()'
test.cpp:(.text+0x5c): undefined reference to `std::basic_string<char,    
std::char_traits<char>, std::allocator<char> >::basic_string(char const*,   
std::allocator<char> const&)'

test.cpp:(.text+0x6c): undefined reference to `std::allocator<char>::allocator()'
test.cpp:(.text+0x88): undefined reference to `std::basic_string<char,  
std::char_traits<char>, std::allocator<char> >::basic_string(char const*,  
std::allocator<char> const&)' 

并继续修复

  1. 我手动编译程序:
gcc test.cpp  -o test.o test

我的文件测试是这样的:

#include <Ogre.h>

using namespace Ogre;

int main()
{
Root* root= new Root();

if( !root->restoreConfig() )
{
    root->showConfigDialog();
    root->saveConfig();
}
return 0;
}

如何解决我的问题?

我正在使用 Debian Wheezy。

Ogre3D 版本:1.8

感谢您的回答。

4

2 回答 2

1

这是一个链接器错误。用于pkg-config --libs检索正确的链接器选项

g++ -o test test.cpp -Wall $(pkg-config --cflags OGRE) $(pkg-config --libs OGRE) -lboost_system

如果您在非标准位置(例如/opt/ogre)安装了 OGRE,您可能需要调用 pkg-config 并设置PKG_CONFIG_PATH环境变量:

PKG_CONFIG_PATH=/opt/ogre/lib/pkgconfig pkg-config --libs OGRE
于 2012-09-09T15:12:13.777 回答
0

这是一个链接器错误,但不是 Ogre3d,而是 STL(标准模板库)。这样做的原因是您使用gcc,而您应该使用g++。但是,令我惊讶的是,您也没有收到 Ogre 的链接器错误,解决方案就像 Thomas 建议的那样(尽管他在示例中也使用了“g++”)。

于 2012-09-10T13:22:18.633 回答