Posted on 2011-03-10 23:22
buf 阅读(799)
评论(0) 编辑 收藏 引用 所属分类:
Graphics
下载的是已预编译了lib和dll的版本,编译的时候一切ok,除了需要在SampleBrowser的工程选项中调整一下CMake的路径,但是执行的时候出现“正常初始化失败”的提示。将SampleBrowser设置为启动项目并调试,输出信息如下:
“SampleBrowser_d.exe”: 已加载“E:\Ogre\OgreSDK_vc8_v1-7-2\bin\debug\SampleBrowser_d.exe”,已加载符号。
“SampleBrowser_d.exe”: 已加载“C:\WINDOWS\system32\ntdll.dll”,未加载任何符号。
“SampleBrowser_d.exe”: 已加载“C:\WINDOWS\system32\kernel32.dll”,未加载任何符号。
“SampleBrowser_d.exe”: 已加载“C:\WINDOWS\system32\user32.dll”,未加载任何符号。
“SampleBrowser_d.exe”: 已加载“C:\WINDOWS\system32\gdi32.dll”,未加载任何符号。
“SampleBrowser_d.exe”: 已加载“C:\WINDOWS\system32\shell32.dll”,未加载任何符号。
“SampleBrowser_d.exe”: 已加载“C:\WINDOWS\system32\advapi32.dll”,未加载任何符号。
“SampleBrowser_d.exe”: 已加载“C:\WINDOWS\system32\rpcrt4.dll”,未加载任何符号。
“SampleBrowser_d.exe”: 已加载“C:\WINDOWS\system32\secur32.dll”,未加载任何符号。
“SampleBrowser_d.exe”: 已加载“C:\WINDOWS\system32\msvcrt.dll”,未加载任何符号。
“SampleBrowser_d.exe”: 已加载“C:\WINDOWS\system32\shlwapi.dll”,未加载任何符号。
“SampleBrowser_d.exe”: 已加载“E:\Ogre\OgreSDK_vc8_v1-7-2\bin\debug\OgreMain_d.dll”,未加载任何符号。
LDR: LdrpWalkImportDescriptor() failed to probe e:\Ogre\OgreSDK_vc8_v1-7-2\bin\Debug\OgreMain_d.dll for its manifest, ntstatus 0xc0150002
调试器:: 在进程加载过程中引发了未处理的无法继续的异常
程序“[4056] SampleBrowser_d.exe: 本机”已退出,返回值为 -1072365566 (0xc0150002)。
看起来和manifest有关。用二进制编辑器打开OgreMain_d.dll,搜索"manifest"字符串发现需要的运行时库为"Microsoft.VC80.DebugCRT" version="8.0.50727.4053" 。而我在本机C:\windows\winsxs下找到的版本为:
x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_f75eb16c
x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_5490cd9f
我的VS版本为VS 2005 TS SP1 (8.0.50727.762),和winsxs下dll的版本号倒是一致的,看起来可能是需要打更新的补丁了。
google一番后果真如此:正是7/28/2009发布的Visual Studio 2005 Service Pack 1 ATL Security Update增加了.4053版本的runtime。乖乖,补丁还不小,249.1MB,差点就250了。不知这个补丁装起来会不会如同VS2005的SP1那样恐怖。。。
关于此更新的详细信息见MS KB971090。另外这里http://stackoverflow.com/questions/1582844/vcredist-x86-dll-and-version-8-0-50727-4053谈到了新旧版本runtime的兼容问题,答案是安装该补丁不会影响原来依赖8.0.50727.762版本dll的程序的运行,因为"If the application loads the library from WinSxS, you don’t need to worry about such issue. When the KB971090 applied, there is a redirection policy installed in WinSxS, which will redirect any lower version of VC80 CRT to the highest one (4053). "
问题是,装了这个更新再发布程序,就得把相应的redist也带上了。。。切记切记。
应该就是这样了,不过还没有把安全升级down下来测试。网上有的朋友说是因为没有安装VS8的SP1,也许是把SP1和这个安全更新弄混了吧。
后继:
1、这个针对VS8SP1的安全更新装起来不算慢。。。可以忍受
2、在安装了DX最新的enduser runtime(June2010)后,Ogre的sample总算可以跑起来了,效果还不错:-)