如何将OpenSceneGraph库和包含的库正确链接到Visual Studio?

问题描述

我正在尝试编译并构建带有Visual Studio Community 19(16.7.3)的Windows 10(内部版本18363)上运行的OSG 3.0入门指南(王瑞,钱雪雷)的第一个基本示例。 代码如下:

#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 OS中的环境变量设置的。 如果出现故障,建议的cmd命令也无济于事。 (我认为,将所有这些屏幕截图都保留了下来比较整洁,但是如果需要,我当然可以上传它们)

我也将自己的设置与此答案作了比较:How to add additional libraries to Visual Studio project?,我认为也是这样。

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

我们将不胜感激。 谢谢。

解决方法

您设置了%OSG_ROOT%吗?

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

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

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