2

私はogre3Dの初心者で、Ogre3Dで最初のプログラムをビルドしていますが、プログラムをコンパイルしようとすると、次のエラーが発生します。

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;
}

私の問題を解決する方法は?

私はDebianWheezyを使用しています。

バージョン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

非標準の場所(たとえば)にOGREをインストールした場合は、環境変数を設定/opt/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(標準テンプレートライブラリ)に対するものです。これは、 g++を使用する必要があるときにgccを使用しているためです。ただし、Ogreへのリンカーエラーも発生していないことに驚いています。その解決策は、Thomasが提案したようなものです(ただし、彼の例では「g ++」も使用しています)。

于 2012-09-10T13:22:18.633 に答える