首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > 多媒体 >

32位的程序,在win8 64位系统下不能加载32位的d3d9.dll?解决方案

2013-09-10 
32位的程序,在win8 64位系统下不能加载32位的d3d9.dll???好奇怪的问题,win7下开发的32位程序,使用到了d3d9

32位的程序,在win8 64位系统下不能加载32位的d3d9.dll???
好奇怪的问题,win7下开发的32位程序,使用到了d3d9的功能,在win7 32位和64位的系统下都正常,但是放到win8 64位系统下就出问题了,不知道为什么加载不了d3d9.dll。加载d3d9.dll这个文件时,调试窗口输出 

已加载c:\windows\SysWOW64\d3d9.dll
aa.exe 中的 0x7738b2d8 处最可能的异常: 0xC0000138: Ordinal Not Found
已卸载d3d9.dll

按道理应该是加的是c:\windows\system32 下的d3d9.dll,但是却加载了SysWOW64下的dll.

我试过自己用代码来加载
Loadlibrary("c:\\windows\\system32\\d3d9.dll");
结果加载失败,getlasterror返回182

输出还是

已加载c:\windows\SysWOW64\d3d9.dll
aa.exe 中的 0x7738b2d8 处最可能的异常: 0xC0000138: Ordinal Not Found
已卸载d3d9.dll

也就是说,无论怎么样,加载的都是64位的d3d9.dll,而我的程序是32位的,导致加载失败。哪位大侠知道该如何解决这个问题,先谢啦!!!!!
[解决办法]
其实在64位系统环境下,32位的DLL都是在SysWOW64里的,64位的DLL都是在system32
所以加载的时候,你的32位程序去加载SysWOW64里的DLL是正确的。
Ordinal Not Found应该是你使用的DX版本可能和系统的不一致,系统的DX DLL没有这个函数入口,尝试更新下DX试试...

热点排行