J'ai déjà vérifié des dizaines de pages Web et de configurations à ce sujet. Je suis désespérée parce que j'ai vraiment besoin d'utiliser cette fonctionnalité et bientôt.Erreur lors de la tentative de liaison avec osgText et freetype
Ce sont mes paramètres:
- Langue: C++
- Bibliothèques: OpenSceneGraph (OSG) v3.2.0
- OS: Xubuntu 14.04 (sur une machine virtuelle VMWare Player)
Je compile un exemple du livre "OpenSceneGraph 3.0 - Guide du débutant", pages 297-299, concernant l'utilisation de texte sur OSG, qui nécessite un plug-in supplémentaire, type freetype (http://www.freetype.org/), qui ch est installé.
L'exemple compile correctement. Je pense avoir tous les fichiers et bibliothèques inclus.
Le problème survient dans la phase de liaison. Il me donne toujours cette erreur:
/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
J'ai vérifié que j'ai les fichiers:
- « /usr/lib/libosgText.so.99 » qui est un lien vers le fichier lib réel: "libosgText.so.3.2.0".
- "/usr/lib/osgPlugins-3.2.0/osgdb_freetype.so" la dépendance externe de la bibliothèque osgText.
Je n'avais plus d'idées. :(
quelqu'un peut me aider
Ma question s'arrête ici, mais si vous voulez vérifier mes fichiers, s'il vous plaît les trouver ci-dessous
Le code responsable de ce problème:?.
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();
}
ce sont les fichiers à inclure que j'utilise qui sont spécifiques aux opérations osgText, à l'exception de tous les autres que je l'ai déjà besoin sur mon projet:
#include <osg/Camera>
#include <osgText/TextBase>
#include <osgText/Font>
#include <osgText/Text>
Ceci est mon fichier "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)
Avez-vous essayé l'exemple 'osgtext' fourni avec l'installation' OSG'? Est-ce que ça marche? Et n'avez-vous pas besoin de faire un lien avec 'Freetype' aussi? –
Non, je n'ai pas essayé cette démo. En ce qui concerne le Freetype, je pense qu'il est déjà relié en interne par OSG. Quoi qu'il en soit, ce problème est déjà résolu. Je poste la réponse ci-dessous. –