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