[英]Incorrect ComCtl32.dll is loaded after porting a project from Win32 to x64 platform in Visual Studio 2010
我已经将一个项目从Win32
移植到x64
平台。 我更改了所有依赖项,因此我可以顺利地构建项目。 但是,一旦我启动可执行文件,我就会收到错误(0xc000007b)
。
使用依赖性walker我可以看到,在某个点上加载了ComCTL32.dll
但是x86
而不是x64
。
一旦我关闭了清单生成( linker->Manifestfile
),它就可以工作了。 但那不是解决方案。
所以我的问题是:在Visual Studio 2010
中,我可以在哪里设置正确的DLL ComCtl32.dll
的路径。
好吧,明显很重要。 可能导致此问题的错误示例如下所示:
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="x86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
processerArchitecture属性值很重要。 一个好的使用*
,这意味着兼容或amd64
,这意味着64位 。
您没有在任何地方设置路径。 您指定一个清单来指示您想要的ComCtrl版本,然后由操作系统来查找它,就像任何其他DLL一样。 您看到的错误意味着64位进程正在尝试加载32位DLL,反之亦然。 这可能是一个搜索路径问题,可能是一个依赖问题。 使用像DependancyWalker这样的工具来找到罪魁祸首。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.