|
我下的最新的OpenSceneGraph-3.0.1.zip,按照 http://www.cnblogs.com/eaglezhao ... 7/12/eaglezhao.html 方法在我的电脑上测试,环境:台式机,win7 x64旗舰版,VS2010,在批生成库文件时,我用的是x64平台,因为我也选不了win32,只有x64,如图:
其它没什么异常,配好环境变量,重启了电脑建了一个win32控制台程序,测试代码如下:
#include<osgViewer/Viewer>
#include<osgDB/ReadFile>
#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
int main( int argc, char **argv )
{
osgViewer::Viewer viewer;
viewer.setSceneData( osgDB::readNodeFile( "cow.osg" ) );
return viewer.run();
}
这些是在网上找的,应该是别人运行正常的代码,在项目属性里 VC++ 目录 中我也加入了包含文件include、库文件lib文件夹,如图:
而我编译能成功,但运行时报错,在链接器的输入里加入附加依赖项也不行,错误信息如下:
1>------ 已启动生成: 项目: vsOSGTest, 配置: Release Win32 ------
1>生成启动时间为 2012/5/22 16:28:42。
1>InitializeBuildStatus:
1> 正在对“Release\vsOSGTest.unsuccessfulbuild”执行 Touch 任务。
1>ClCompile:
1> test.cpp
1>test.obj : error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: virtual int __thiscall osgViewer::Viewer::run(void)" (__imp_?run@Viewer@osgViewer@@UAEHXZ)
1>test.obj : error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: virtual void __thiscall osgViewer::Viewer::setSceneData(class osg::Node *)" (__imp_?setSceneData@Viewer@osgViewer@@UAEXPAVNode@osg@@@Z)
1>test.obj : error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall osgViewer::Viewer::Viewer(void)" (__imp_??0Viewer@osgViewer@@QAE@XZ)
1>test.obj : error LNK2001: 无法解析的外部符号 "__declspec(dllimport) class osg::Node * __cdecl osgDB::readNodeFile(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class osgDB::Options
const *)" (__imp_?readNodeFile@osgDB@@YAPAVNode@osg@@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PBVOptions@1@@Z)
1>test.obj : error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: static class osgDB::Registry * __cdecl osgDB::Registry::instance(bool)" (__imp_?instance@Registry@osgDB@@SAPAV12@_N@Z)
1>test.obj : error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: class osgDB::Options * __thiscall osgDB::Registry::getOptions(void)" (__imp_?getOptions@Registry@osgDB@@QAEPAVOptions@2@XZ)
1>test.obj : error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: void __thiscall osgViewer::Viewer::`vbase destructor'(void)" (__imp_??_DViewer@osgViewer@@QAEXXZ)
1>E:\vsProject\vsOSGTest\Release\vsOSGTest.exe : fatal error LNK1120: 7 个无法解析的外部命令
1>
1>生成失败。
1>
1>已用时间 00:00:10.28
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
是不是我用x64平台生成的库文件,在win32控制台应用程序中就是不能用吗?可是我生成库文件时,也选不了win32啊,我想请问高手,这是什么原因造成的,以及怎么解决,谢谢 |
|