查看: 1081|回复: 6

新手求助:最简单的例子链接不过

[复制链接]

该用户从未签到

发表于 2011-7-13 12:35:30 | 显示全部楼层 |阅读模式
大家好,我是刚刚学习OSG的新手。因为论文的程序要用到OSG,所以最近在看OSG的相关资料,非常高兴能在这个论坛和大家相识,还请大家多多指教。我的问题估计非常新手:是这样的,我在论坛下载了 QQ截图20110713120605.png ,我用的编译器是vs2008 vs2008.png ,代码就是这样的#include "stdafx.h"
#include <osgDB/ReadFile>
#include <osgViewer/Viewer>

int _tmain(int argc, _TCHAR* argv[])
{
    osgViewer::Viewer viewer;
    viewer.setSceneData(osgDB::readNodeFile("glider.osg"));
    viewer.realize();
    viewer.run();  

    return 0;
}

按照编译包里的要求,我配置了两个环境变量,然后把相应的头文件和库文件目录在VS里添加了一下。编译是可以通过的,但是链接就一堆错误了,我复制了前面三个
1>test.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: void __thiscall osgViewer::Viewer::`vbase destructor'(void)" (__imp_??_DViewer@osgViewer@@QAEXXZ),该符号在函数 _wmain 中被引用
1>test.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: virtual int __thiscall osgViewer::Viewer::run(void)" (__imp_?run@Viewer@osgViewer@@UAEHXZ),该符号在函数 _wmain 中被引用
1>test.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: virtual void __thiscall osgViewer::Viewer::realize(void)" (__imp_?realize@Viewer@osgViewer@@UAEXXZ),该符号在函数 _wmain 中被引用


    我的目的就是把文档上的简单例子在自己的电脑上实现一下,看下实际效果。不知道我的步骤是不是哪错了,还是我的电脑有问题,搞不清楚,我对集成开发环境的使用也不太熟悉。希望论坛里的朋友能帮忙看下,多谢了。最后我想说,其实真的很感谢那些辛苦写出OSG学习资料的人,你们的故事让我觉得很真实,很感动,祝你们好运。

该用户从未签到

发表于 2011-7-13 12:45:07 | 显示全部楼层
请问是否添加了依赖库osgViewer.lib等之类的

该用户从未签到

 楼主| 发表于 2011-7-13 13:00:17 | 显示全部楼层
回复 2# FlySky
问下你说的是VS菜单的项目-属性-配置属性-链接器-输入-附加依赖项吗? 11111111.png 2222222222222.png

该用户从未签到

发表于 2011-7-13 13:49:45 | 显示全部楼层
是的,注意Debug和 release别错了
Debug下添加:
OpenThreadsd.lib
osgd.lib
osgDBd.lib
osgFXd.lib
osgGAd.lib
osgManipulatord.lib
osgParticled.lib
osgShadowd.lib
osgSimd.lib
osgTerraind.lib
osgTextd.lib
osgUtild.lib
osgViewerd.lib

Release下添加:
OpenThreads.lib
osg.lib
osgDB.lib
osgFX.lib
osgGA.lib
osgManipulator.lib
osgParticle.lib
osgShadow.lib
osgSim.lib
osgTerrain.lib
osgText.lib
osgUtil.lib
osgViewer.lib

该用户从未签到

发表于 2011-7-13 14:35:20 | 显示全部楼层
#ifdef _DEBUG
#pragma comment(lib,"OpenThreadsd.lib")
#pragma comment(lib,"osgAnimationd.lib")
#pragma comment(lib,"osgd.lib")
#pragma comment(lib,"osgDBd.lib")
#pragma comment(lib,"osgUtild.lib")
#pragma comment(lib,"osgGAd.lib")
#pragma comment(lib,"osgFXd.lib")
#pragma comment(lib,"osgViewerd.lib")
#pragma comment(lib,"osgTextd.lib")
#else
#pragma comment(lib,"OpenThreads.lib")
#pragma comment(lib,"osgAnimation.lib")
#pragma comment(lib,"osg.lib")
#pragma comment(lib,"osgDB.lib")
#pragma comment(lib,"osgUtil.lib")
#pragma comment(lib,"osgGA.lib")
#pragma comment(lib,"osgFX.lib")
#pragma comment(lib,"osgViewer.lib")
#pragma comment(lib,"osgText.lib")
#endif // _DEBUG

该用户从未签到

 楼主| 发表于 2011-7-13 17:32:03 | 显示全部楼层
回复 4# FlySky
我添加了一下,可以正常运行了,谢谢!不过我不是很明白的是,我已经在“项目和解决方案-VC++目录”里添加了库文件和头文件的目录,你说的需要添加的这些库不是可以在我新增的库文件路径里找到吗?为什么在“附加依赖项”里又添加了一遍呢?

该用户从未签到

 楼主| 发表于 2011-7-13 17:34:28 | 显示全部楼层
回复 5# zhoudeji
谢谢,现在可以正常运行了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表