为啥Vs2010无法打开osg的头文件,附加依赖项,包含目录和库目录都配好了,系统变量也设好了。但还是有问

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥Vs2010无法打开osg的头文件,附加依赖项,包含目录和库目录都配好了,系统变量也设好了。但还是有问相关的知识,希望对你有一定的参考价值。

#include<osgViewer/Viewer>
#include<osgDB/ReadFile>
int main( int argc, char **argv )

osgViewer::Viewer viewer;
viewer.setSceneData( osgDB::readNodeFile( "cow.osg" ) );
return viewer.run();


无法打开源文件
fatal error C1083: 无法打开包括文件:“osgViewer/Viewer”: No such file or directory

参考技术A 包含目录和库目录没配好了 参考技术B 把源码中的include也加到包含目录include里面 参考技术C 可能要加上#include <window.h>
或者是去掉#include “stdafx.h”
参考技术D 我也遇到这个问题了,怎么解决,求解 第5个回答  2018-03-02 你包含目录是C盘的include和C盘的lib吗?

VS中PCL库附加依赖项配置

在VS中使用PCL库通常要经过一些配置,参考https://www.cnblogs.com/blog-vincent-0x1F7/p/9507631.html教程中第一部分PCL安装及在VS2013中使用PCL。

其中包含目录和库目录的设置都简单,根据自己安装目录的差别略有不同;但是附加依赖项则较为复杂一点,主要是因为附加依赖项太多了。很多情况下我们配置附加依赖项都是直接复制网上教程中别人的附加依赖项,对于不同版本的PCL可能附加依赖项就会略有不同,全盘复制很有可能导致link error,有些依赖项找不到有些又缺失。其实附加依赖项可以在配置的各个库目录中找到,打开PCL安装目录下的各个库目录比如VTK下的库目录可以看到VTK所需的依赖项:

技术分享图片

各个库目录中的所有.lib文件就是我们的附加依赖项,但是这里要把他们区分为debug模式下的依赖项和release模式下的依赖项,而且.lib文件数量繁多,自己复制这些文件名还要分成debug、release两拨确实太多了。我们可以用批处理命令来帮我们执行。

观察各个库目录可知调试模式和发行模式的分别,在%PCL_ROOT%lib下的.lib文件加了debug和release来区分,%PCL_ROOT%3rdPartyBoostlib下的以有gd的为debug模式否则为release模式,其他各个库目录也都有类似规律,所以可以在各个库目录下写批处理文件导出.lib依赖项:

1.在%PCL_ROOT%lib下新建文本文档,改后缀名为.bat,笔记本打开编辑如下内容:

@echo off
for %%I in (*.lib) do echo %%I>>all.txt      //解释:对每一个(*.lib)通配符匹配到的文件名I,显示I到文件all.txt,之后的语句类似理解就可
for %%I in (*debug.lib) do echo %%I>>adebug.txt
for %%I in (*release.lib) do echo %%I>>arelease.txt
pause

则会生成adebug.txt保存debug模式下的依赖项、arelease.txt保存release模式下的依赖项、all.txt保存所有依赖项,如下:

技术分享图片

2.在%PCL_ROOT%3rdPartyBoostlib下编写:

@echo off
for %%I in (*.lib) do echo %%I>>all.txt
for %%I in (*mt-gd-1_64.lib) do echo %%I>>adebug.txt
for %%I in (*mt-1_64.lib) do echo %%I>>arelease.txt
pause

3.在%PCL_ROOT%3rdPartyOpenNI2Lib下只有一个不必用批处理,自己抄一下名称就好;在%PCL_ROOT%3rdPartyFLANNlib和%PCL_ROOT%3rdPartyQhulllib下因为不太多故将所有.lib导出到一个all.txt文件然后自己根据有没有_d区分debug和release版本:

@echo off
for %%I in (*.lib) do echo %%I>>all.txt
pause

4.在%PCL_ROOT%3rdPartyVTKlib下根据有无-gd区分debug和release,编写bat文件如下:

@echo off
for %%I in (*.lib) do echo %%I>>all.txt
for %%I in (*8.0.lib) do echo %%I>>arelease.txt
for %%I in (*c++.lib) do echo %%I>>arelease.txt
for %%I in (*-gd.lib) do echo %%I>>adebug.txt
pause

最后把所有debug模式下依赖项汇总,把所有release模式下的依赖项汇总即得到设置中所需要的依赖项。另外如果想更简单一点可以把以上的输出文件名改为同一个,这样可以所有debug的输出到一个debug.txt,所有release的输出到一个release.txt,不过要注意的是文件名要使用绝对路径。

以上是关于为啥Vs2010无法打开osg的头文件,附加依赖项,包含目录和库目录都配好了,系统变量也设好了。但还是有问的主要内容,如果未能解决你的问题,请参考以下文章

VS中包含目录附加依赖项库目录及具体设置

如何用VS2010编写动态链接库DLL

在 VC++(VS2010) 项目输出中包含 DLL

求问vs2013怎么添加静态库,试了两种方法都有问题

无法打开文件'dxguid.lib'

VS2010 配置OGRE,在运行OGRE.sln时报错“无法打开All_Build”说啥不存在,这是为啥啊?