首页 > 解决方案 > 如何将 OpenSceneGraph 库和包含正确链接到 Visual Studio?

问题描述

我正在尝试使用 Visual Studio Community 19 (16.7.3) 在 Windows 10 (Build 18363) 上运行 OSG 3.0 Beginner's Guide (Rui Wang, Xuelei Qian) 编译和构建第一个基本示例。代码如下所示:

#include <osgDBd/ReadFile>
#include <osgViewerd/Viewer> //the "d" is supposed to be there when in Debug solution configuration

int main(int argc, char** argv)
{
    osgViewer::Viewer viewer;
    viewer.setSceneData(osgDB::readNodeFile("cessna.osg"));
    return viewer.run();
}

但错误消息是:

Error (active)  E1696   cannot open source file "osgDBd/ReadFile"
Error (active)  E1696   cannot open source file "osgViewerd/Viewer"
Error   C1083   Cannot open include file: 'osgDBd/ReadFile': No such file or directory

所以我重新检查了我的解决方案属性,我在 OSG 的在线文档“使用 Visual Studio 编译”(链接器、C++ 属性……)以及我在 Windows 操作系统中的环境变量之后设置了这些属性。如果出现问题,推荐的 cmd 命令也无济于事。(我认为它不那么杂乱,省略了所有这些截图,但如果愿意,我当然可以上传它们)

我还将我的设置与这个答案进行了比较:如何将其他库添加到 Visual Studio 项目?,我也是这么想的。

我应该补充一点,我在与 Visual Studio 或 Windows 不同的驱动器上构建 OSG,但我认为正确设置环境变量应该没问题。

帮助将不胜感激。谢谢你。

标签: visual-studiolinker-errorsopenscenegraph

解决方案


您是否设置了 %OSG_ROOT% ?

我不确定指南中的内容,但我的典型安装是将 Windows 环境变量 OSG_ROOT 设置为我的 Program Files (x86) 中的主 OpenSceneGraph 文件夹,然后将 $(OSG_ROOT)\include 添加到我的其他包含文件夹和$(OSG_ROOT)\lib 到我的其他库文件夹。

此外,看起来您正在使用的示例在文件夹名称中添加了一个“d” - 对于发布版本应该只是 osgDB/ReadFile 和 osgViewer/Viewer - 也许他们希望您构建调试库并添加这样的文件夹你的包括?我有一个单独的 lib 和 bin,但我不知道为什么他们需要一个单独的包含文件夹用于 Debug 和 Release,所以我的建议是从包含语句中删除 d,例如 osgDBd --> osgDB、osgViewerd --> osgViewer 等

不幸的是,OSG 解决方案中的示例应用程序引用了本地构建文件夹,而不是安装的文件夹,因此不能作为如何从其安装位置引用 OSG 的示例。但是,如果您可以从本地构建文件夹构建,您可以只使用示例之一中的项目设置。


推荐阅读