2015-04-07 3 views
0

Я уже проверил десятки веб-страниц и конфигураций об этом. Я в отчаянии, потому что мне действительно нужно использовать эту функцию и скоро.Ошибка при попытке установить связь с osgText и freetype

Это мои настройки:

  • Язык: C++
  • Библиотеки: OpenSceneGraph (OSG) v3.2.0
  • ОС: Xubuntu 14.04 (на виртуальной машине VMWare Player)

Я компилирую пример из книги «OpenSceneGraph 3.0 - Руководство для начинающих», стр. 297-299, относительно использования текста в OSG, для которого требуется дополнительный плагин, freetype (http://www.freetype.org/), whi ch установлен.

Пример компилируется правильно. Я думаю, что у меня есть все необходимые файлы и библиотеки.

Проблема возникает в фазе связи. Он всегда дает мне эту ошибку:

/usr/bin/ld: CMakeFiles/osg_demos.dir/osg_demos.cpp.o: undefined reference to symbol '_ZN7osgText12readFontFileERKSsPKN5osgDB7OptionsE' 
//usr/lib/libosgText.so.99: error adding symbols: DSO missing from command line 
collect2: error: ld returned 1 exit status 
make[2]: *** [osg_demos] Error 1 
make[1]: *** [CMakeFiles/osg_demos.dir/all] Error 2 
make: *** [all] Error 2 

Я проверил, что у меня есть файлы:

  • «/usr/lib/libosgText.so.99», который является ссылкой на реальный Lib файл: "libosgText.so.3.2.0".
  • "/usr/lib/osgPlugins-3.2.0/osgdb_freetype.so" Внешняя зависимость библиотеки osgText.

У меня кончились идеи. :(
Может кто-нибудь мне помочь

Мой вопрос здесь останавливается, но в случае, если вы хотите, чтобы проверить мои файлы, пожалуйста, найти их ниже

Код, отвечающий за эту проблему:?.

osgText::Text* createText(const osg::Vec3& pos, 
      const std::string& content, float size) { 
    osg::ref_ptr<osgText::Font> g_font = osgText::readFontFile("arial.ttf"); 
    osg::ref_ptr<osgText::Text> text = new osgText::Text; 
    text->setFont(g_font.get()); 
    text->setCharacterSize(size); 
    text->setAxisAlignment(osgText::TextBase::XY_PLANE); 
    text->setPosition(pos); 
    text->setText(content); 
    return text.release(); 
} 

это файлы, которые я использую, которые являются специфическими для операций osgText, отдельно от всех других, которые я уже нуждаются в моем проекте, включают:

#include <osg/Camera> 
#include <osgText/TextBase> 
#include <osgText/Font> 
#include <osgText/Text> 

Это мой файл "CMakeLists.txt":

cmake_minimum_required(VERSION 2.6) 
project(OSG_DEMOS) 

find_package(OpenThreads) 
find_package(osg) 
find_package(osgDB) 
find_package(osgGA) 
find_package(osgUtil) 
find_package(osgViewer) 
find_package(osgText)   # Needed for demo: writeText() 
find_package(osgShadow)  # Needed for demo: writeText() 
find_package(osgParticle)  # Needed for demo: writeText() 
find_package(osgFX)   # Needed for demo: writeText() 
find_package(PCL 1.6 COMPONENTS) 

set(CMAKE_CXX_FLAGS "-g -Wno-deprecated") 

macro(config_project PROJNAME LIBNAME) 
    include_directories(${${LIBNAME}_INCLUDE_DIR}) 
    target_link_libraries(${PROJNAME} ${${LIBNAME}_LIBRARIES}) 
endmacro() 

add_executable(osg_demos osg_demos.cpp) 

config_project(osg_demos OPENTHREADS) 
config_project(osg_demos OSG) 
config_project(osg_demos OSGDB) 
config_project(osg_demos OSGGA) 
config_project(osg_demos OSGUTIL) 
config_project(osg_demos OSGVIEWER) 
config_project(osg_demos osgText) 
config_project(osg_demos osgShadow) 
config_project(osg_demos osgParticle) 
config_project(osg_demos osgFX) 
+0

Вы пробовали пример 'osgtext', который поставляется с установкой' OSG'? Это работает? И вам не нужно связываться с «Freetype»? –

+0

Нет, я не пробовал эту демонстрацию. Что касается Freetype, я думаю, что он уже связан внутри OSG. Во всяком случае, эта проблема уже решена. Я отправляю ответ ниже. –

ответ

0

Проблема была в файле "CMakeLists.txt". По-видимому, для макроса config_project требуется все прописные буквы. Я не совсем понимаю, почему. Чтобы правильно сделать ссылку проекта, я переключился на прописные ссылку на имя библиотеки на последних четырех строках этого файла, как:

  • config_project (osg_demos OSGTEXT)

вместо:

  • config_project (osg_demos osgText)

Какой кошмар просто потому, что о f это ...

+0

Не угадывайте, чтобы принять ответ! :) –

 Смежные вопросы

  • Нет связанных вопросов^_^