c++ - OpenSceneGraph 未加载 openflight 插件

标签 c++ opengl openscenegraph

我在使用简单的测试应用程序将 openflight (*.flt) 模型加载到 Openscenegraph 时遇到问题:

#include <osgDB/ReadFile>
#include <iostream>

using namespace std;

int main(int argc, char* argv[])
{
    // Setting the message level low so I can read Debug messages
    osg::setNotifyLevel(osg::NotifySeverity::DEBUG_FP);

    cout << "Opening flt file..." << endl;
    osg::ref_ptr<osg::Node> mdl = osgDB::readNodeFile(argv[1]);
    if (mdl != NULL) cout << "Opening flt file successful" << endl;
    else cout << "Opening flt file failed" << endl;

    return 0;
}

这应该通过将文件作为参数传递给应用程序来读取文件 pyramid.flt,该文件位于我的可执行目录中。但是,OSG 似乎无法加载所需的 Openflight 插件来真正读取文件。因此程序在尝试加载时返回 NULL。

奇怪的是,调试消息告诉我正在使用所需的 DLL,如下所示:

Opening flt file...
itr='C:\dev\CgfGen\build32\3dviewer\Debug'
FindFileInPath() : trying C:\dev\CgfGen\build32\3dviewer\Debug\osgPlugins-3.4.1\osgdb_openflightd.dll ...
FindFileInPath() : USING C:\dev\CgfGen\build32\3dviewer\Debug\osgPlugins-3.4.1\osgdb_openflightd.dll
DynamicLibrary::failed loading "osgPlugins-3.4.1/osgdb_openflightd.dll"
Warning: Could not find plugin to read objects from file "pyramid.flt".
Opening flt file failed

我的 pyramid.flt 在 Openflight 版本 16.5 中。 我正在运行我的应用程序的调试版本。 OSG 正在加载 osgdb_openflightd.dll

的调试版本

有人知道问题出在哪里吗?以及如何解决?

最佳答案

FindFileInPath() : USING C:\dev\CgfGen\build32\3dviewer\Debug\osgPlugins-3.4.1\osgdb_openflightd.dll

这只是意味着 OSG 已经发现了一个与它正在寻找的文件名相匹配的文件,但并不意味着它已经成功地使用了它。下一行:

DynamicLibrary::failed loading "osgPlugins-3.4.1/osgdb_openflightd.dll"

表示插件加载失败。这可能是因为插件自身的依赖项存在问题。您是否从头开始自己构建 OSG 和插件?

您或许可以使用 depends.exe 检查并查看您的 FLT 插件需要哪些其他 DLL。您还可以使用 SysInternals 的进程监视器之类的东西来查看 OSG 在

关于c++ - OpenSceneGraph 未加载 openflight 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49012609/

相关文章:

c++ - 在 Linux 上安装并运行 osgEarth

c++ - Qt DrawLine - 在绘制时动态更改线条颜色,而不拆分线条

c++ - 为什么这两个循环在使用 -O3 编译时运行得同样快,但在使用 -O2 编译时却不是?

c++ - 为什么构造函数上的显式说明符不能阻止向上转型?

c++ - OpenGL:渲染天空盒 cubmap 问题

c++ - 如何修复在 visual studio 2013 上构建 VirtualplannetBuilder 源代码时出现的错误?

c++ - easy_curl_perform 返回错误 26(写入错误)

c++ - 使用 openGL 渲染/动画 2d 的最佳方式?

opengl - 具有数组输入的顶点着色器

javascript - 是否可以将开放的 Inventor 场景图转换为 Threejs 场景?