我试图打开简单的.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库?