我试图打开简单的.osg模型,osg说它无法加载 osgPlugins-3.4.0/osgdb_osg.so
.
主机操作系统:macOS 10.12.6
CMake版本3.9.0
OpenSceneGraph版本3.4.0
Android NDK版本r14b
CMake配置:
cmake ../OpenSceneGraph \
-DCMAKE_BUILD_TYPE="Release" \
-DCMAKE_INSTALL_PREFIX=../OpenSceneGraph-android-static \
-DCMAKE_SYSTEM_NAME="Android" \
-DCMAKE_SYSTEM_VERSION=17 \
-DCMAKE_ANDROID_ARCH_ABI=armeabi-v7a \
-DCMAKE_ANDROID_NDK=/Users/kamil/Library/Android/sdk/ndk-bundle \
-DOPENGL_PROFILE="GLES2" \
-DDYNAMIC_OPENTHREADS=OFF \
-DDYNAMIC_OPENSCENEGRAPH=OFF
我将OpenSceneGraph库链接到我的项目qmake文件,如下所示:
my-project.pro
:
...
LIBS += $${OPENSCENEGRAPHPATH}/lib/osgPlugins-3.4.0/libosgdb_osg.a \
$${OPENSCENEGRAPHPATH}/lib/libosgViewer.a \
$${OPENSCENEGRAPHPATH}/lib/libosgDB.a \
$${OPENSCENEGRAPHPATH}/lib/libosgGA.a \
$${OPENSCENEGRAPHPATH}/lib/libosgText.a \
$${OPENSCENEGRAPHPATH}/lib/libosgUtil.a \
$${OPENSCENEGRAPHPATH}/lib/libosgShadow.a \
$${OPENSCENEGRAPHPATH}/lib/libosgTerrain.a \
$${OPENSCENEGRAPHPATH}/lib/libosgSim.a \
$${OPENSCENEGRAPHPATH}/lib/libosg.a \
$${OPENSCENEGRAPHPATH}/lib/libOpenThreads.a
INCLUDEPATH += $${OPENSCENEGRAPHPATH}/include
LIBS += $${OPENSCENEGRAPHPATH}/obj/local/armeabi-v7a/libcurl.a \
$${OPENSCENEGRAPHPATH}/obj/local/armeabi-v7a/libgdal.a \
$${OPENSCENEGRAPHPATH}/obj/local/armeabi-v7a/libft2.a \
$${OPENSCENEGRAPHPATH}/obj/local/armeabi-v7a/libgif.a \
$${OPENSCENEGRAPHPATH}/obj/local/armeabi-v7a/libjpeg.a \
$${OPENSCENEGRAPHPATH}/obj/local/armeabi-v7a/libpng.a \
$${OPENSCENEGRAPHPATH}/obj/local/armeabi-v7a/libtiff.a
...
在我的 main.cpp
中我使用了 USE_OSGPLUGIN
宏来链接 osg
插件:
main.cpp
:
#include <osgDB/Registry>
...
USE_OSGPLUGIN(osg)
...
int main() {
...
}
但是,当我尝试打开一些osg文件时:
osg::Node * node = osgDB::readNodeFile(":/resources/cessna.osg");
osgDB::readNodeFile
返回 NULL
并在输出中打印:
Warning: dynamic library 'osgPlugins-3.4.0/osgdb_osg.so' does not exist (or isn't readable):
dlopen failed: library "osgPlugins-3.4.0/osgdb_osg.so" not found
DynamicLibrary::failed loading "osgPlugins-3.4.0/osgdb_osg.so"
我该怎么做才能正确链接Android的OpenSceneGraph库?