在Linux上出错Ogre3D

时间:2012-09-09 15:05:21

标签: linux ogre3d

我是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. 我手动编译程序:
  2. 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

    感谢您的回答。

2 个答案:

答案 0 :(得分:1)

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

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

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

PKG_CONFIG_PATH=/opt/ogre/lib/pkgconfig pkg-config --libs OGRE

答案 1 :(得分:0)

这是链接器错误,但不是Ogre3d,而是STL(标准模板库)。这样做的原因是,当您使用 g ++ 时,您正在使用 gcc 。但是,我很惊讶您没有向Ogre发送链接器错误,并且解决方案就像Thomas建议的那样(尽管他在他的示例中也使用了“g ++”)。