NxOgre编译备忘
windows2000,VS2005编译NxOgre
环境:windows2000,vs2005(c++,team suite),.net1.0
主要内容
1. vs2005 sp1
2. ogre1.40:
3 PhsyX2.62
4. NxOgre
5 编译NxOgre tutorials
1. vs2005 sp1
1.1 查看自己的vs2005是否已经安装了sp1。
a) 在IDE里选择“帮助->关于Visual Studio 2005”菜单项,查看一下,确认SP1列为其中一个安装的产品:
b) 在IDE里选择“文件->新项目”菜单项,查看一下,确认VS 2005 Web应用项目模型选项(是内置于SP1中的)被安装了,而且是起作用的:
(引自http://www.shengfang.org/blog/in ... a2aaf8dc91169701875)
1.2 sp1的下载
(引自http://hi.baidu.com/yongfa365/bl ... e5b57fcb80c484.html)
VS2005 SP1英文正式版下载地址 431M http://download.microsoft.com/do ... B926601-X86-ENU.exe
VS2005 SP1中文正式版下载地址 440M
http://download.microsoft.com/do ... B926604-X86-CHS.exe
1.3 sp1的安装注意事项
1.安装时间会非常长,如果机器配置不是很高的话需要2个小时,一般的话也需要1个小时左右所以请耐心等待。
2.安装前检查你的c盘是否有大于3G的空余空间,因为安装的时候会释放很多临时文件在c盘,如果不能保证大于3g的话可能会发生异常错误,不过我在安装的时候没有占用3G这么恐怖,不过也起码占用了1G多的空间。
(sp1下载到的那个磁盘分区,最好空间也要大一些)
3.如果你以前安装过web application project,在安装vs2005 sp1以前请先把他卸载,不然不能成功安装vs2005 sp1
4.vs2005sp1的补丁包是把你机器上所有单独装过vs2005的版本的补丁都打上,如果机器上装了Visual Web Developer Express和Visual Studio team sutie,那么他就要运行安装补丁两次.
(引自http://www.cnblogs.com/ltp/archive/2007/02/25/656562.html)
1.4 安装sp1
在http://www.cnblogs.com/ltp/archive/2007/02/25/656562.html【文1】中有vs2005 sp1安装的一般方法。
可是,1.我的机器是windows2000,找不到“软件限制策略”。2.执行【文1】中的.bat文件时出错--无法将相应的键值导入注册表。
解决方法是手动导入注册表键值:
* "开始"-》“运行”-》键入regedit(回车)。
* 找到HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Installer
* 在其下面建立一项:名称:MaxPatchCacheSize,类型:REG_DWORD,数据值:0
现在执行批处理文件来安装
假设下载的sp1存放在目录dir下,
1).在dir目录下建立a.bat文件。
2).用记事本打开a.bat,把下列的代码复制进去,保存,关闭。
regedit export HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Installer installer.reg
regedit add
HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Installer /v
MaxPatchCacheSize /t REG_DWORD /d 0 /f
net stop msiserver
start /wait VS80sp1-KB926604-X86-CHS.exe
//(本行是注释,不要拷贝)VS80sp1-KB926604-X86-CHS.exe是下载的中文sp1文件的名称。如果下载英文的sp1,需作相应的替换
regedit delete HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Installer /v MaxPatchCacheSize /f
regedit import installer.reg
net stop msiserver
del /q installer.reg 2>nul
3).双击执行a.bat。虽然在我的window2000上仍旧会有几个错误。但可以无视之。 sp1开始安装了。
cpu1.7G,内存256M。安装时间近3小时,c盘占了1G。
安装NxOgre基本是按照官方的安装步骤:http://nxogre.org/Installing
2. ogre1.40:
在这里下载以下两个包http://www.ogre3d.org/index.php? ... =412&Itemid=132
ogre-win32-v1-4-0.zip(解压缩到H:\ProgramFiles\Ogre\ogrenew)
OgreDependencies_VC8SP1_Eihort_20070323.zip(解压缩到H:\ProgramFiles\Ogre\ogrenew下)
编译ogre.sln顺利通过
注意,要有足够的硬盘空间来编译ogre的源代码!我选择批编译-》全部。编译完成后,ogrenew目录竟然有4.59G!!!*.obj *.ncb *.sbr *.idb *.pdb *.dep文件占了3.47G!
3 PhsyX2.62
可以参照官方的步骤http://nxogre.org/Installing
4. NxOgre
4.1 下载NxOgre
NxOgre.0.4.RC3.zip(可以在官方http://nxogre.org下载)
NxOgre.0.4.RC3.tutorials.zip(可以在官方http://nxogre.org下载)
NxOgrePatch-ForEihort-VS8SP1.zip(download from http://www.ogre3d.org/phpBB2addons/viewtopic.php?t=3505)
4.2 解压缩
三个包全部解压缩到H:\ProgramFiles\Ogre\NxOgre
4.3 设置环境变量
NXOGRE_DIR=H:\ProgramFiles\Ogre\NxOgre
OGRE_HOME=H:\ProgramFiles\Ogre\ogrenew\OgreMain;H:\ProgramFiles\Ogre\ogrenew
(OGRE_HOME的值设置的可能有问题。因为编译NxOgre tutorials时提示找不到ogre.h)
PHYSX_DIR=H:\Program Files\AGEIA Technologies\AGEIA PhysX SDK\v2.6.2
4.4 编译NxOgre
打开H:\ProgramFiles\Ogre\NxOgre\NxOgre.VC8.sln
可能是前面的OGRE_HOME设置的不对,所以需要加入ogre的目录才能编译通过
在属性->c/c++->inlude目录里“最前面”加入“H:\ProgramFiles\Ogre\ogrenew\OgreMain\include”编译ok
在属性->链接->库目录“最后”加入"H:\ProgramFiles\Ogre\ogrenew\lib"
5 编译NxOgre tutorials
5.1
打开H:\ProgramFiles\Ogre\NxOgre\tutorials\NxOgreTutorials.sln
可能是前面的OGRE_HOME设置的不对,所以需要加入ogre的目录才能编译通过
在属性->c/c++->inlude目录里后面附加
H:\ProgramFiles\Ogre\ogrenew\OgreMain\include;
H:\ProgramFiles\Ogre\ogrenew\Dependencies\include
在属性->链接->库目录“最后”附加
H:\ProgramFiles\Ogre\ogrenew\lib;
H:\ProgramFiles\Ogre\ogrenew\Dependencies\lib\Release
5.2 修改源文件
引自http://www.ogre3d.org/phpBB2addons/viewtopic.php?t=3508
以101.cpp文件和其项目为例。其他同理
1.如果提示“error C2039: 'relX' : is not a member of 'OIS::MouseState' ”
需要用ms.X.rel替换ms.relX
如果提示“error C2039: 'relY' : is not a member of 'OIS::MouseState' ”
需要用ms.X.rel替换ms.relY
如果提示“error C2039: 'relZ' : is not a member of 'OIS::MouseState' ”
需要用ms.Z.rel替换ms.relZ
2.如果提示MSVCRT.lib(crtexe.obj) : error LNK2019: unresolved
external symbol _main referenced in function ___tmainCRTStartup
Release/nxTutorial101.exe : fatal error LNK1120: 1 unresolved externals
一个可行的解决方法:
a.先将tutorialApplicationEihort.h中的这段代码注释掉
#ifdef _CONSOLE
#define TUTORIAL_VOIDMAIN \
int main(int argc, char *argv[]) {\
...
}
#else
#define TUTORIAL_VOIDMAIN \
INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT ) {\
...
}
#endif
b.将a中所说的main函数或winmain函数拷贝到101.cpp末尾。
3.可能还需要注释掉main或WinMain函数中的SET_TERM_HANDLER;
4.注释掉101.cpp末尾的TUTORIAL_VOIDMAIN
其他问题可以到NxOgre论坛咨询:
http://www.ogre3d.org/phpBB2addo ... 5649a7b87f21b4a057b