【问题标题】:How do I link OpenSceneGraph libraries and includes to Visual Studio properly?如何将 OpenSceneGraph 库和包含正确链接到 Visual Studio?
【发布时间】:2020-12-28 22:52:04
【问题描述】:

我正在尝试编译和构建 OSG 3.0 初学者指南(Rui Wang,Xuelei Qian)在 Windows 10(Build 18363)和 Visual Studio Community 19(16.7.3)上运行的第一个基本示例。 代码如下所示:

#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 命令也无济于事。 (我认为省略所有这些屏幕截图会不那么混乱,但如果愿意,我当然可以上传它们)

我还将我的设置与这个答案进行了比较:How to add additional libraries to Visual Studio project?,我认为是一样的。

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

我们将不胜感激。 谢谢。

【问题讨论】:

    标签: visual-studio linker-errors openscenegraph


    【解决方案1】:

    你设置了 %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 的示例。但是,如果您可以从本地构建文件夹构建,您可以只使用示例之一中的项目设置。

    【讨论】:

    • 自从提出这个问题后,我已经搬到了 Ubuntu,但我会确保尽快检查。至于“d”,它用于调试版本,我现在不应该回头看它。但是,无论是否包含“d”都没有区别。
    猜你喜欢
    • 2021-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-25
    • 2021-09-04
    • 1970-01-01
    • 2017-10-27
    • 2017-04-20
    相关资源
    最近更新 更多