Я уже проверил десятки веб-страниц и конфигураций об этом. Я в отчаянии, потому что мне действительно нужно использовать эту функцию и скоро.Ошибка при попытке установить связь с 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)
Вы пробовали пример 'osgtext', который поставляется с установкой' OSG'? Это работает? И вам не нужно связываться с «Freetype»? –
Нет, я не пробовал эту демонстрацию. Что касается Freetype, я думаю, что он уже связан внутри OSG. Во всяком случае, эта проблема уже решена. Я отправляю ответ ниже. –