我已将项目从Win32
移植到x64
平台。我更改了所有依赖项,因此我可以顺利地构建项目。但是,一旦我启动可执行文件,我就会收到错误(0xc000007b)
。
使用依赖性walker,我可以看到,ComCTL32.dll
在某个时刻加载了x86
而不是x64
。
一旦我转动清单生成(linker->Manifestfile
),它就可以了。但那不是解决方案。
所以我的问题是:Visual Studio 2010
中的哪个位置可以设置正确的DLL ComCtl32.dll
的路径。
答案 0 :(得分:6)
嗯,明显很重要。可能导致此问题的错误示例如下所示:
<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位。
答案 1 :(得分:1)
你没有在任何地方设置路径。您指定一个清单来指示您想要的ComCtrl版本,然后由操作系统来查找它,就像任何其他DLL一样。您看到的错误意味着64位进程正在尝试加载32位DLL,反之亦然。这可能是一个搜索路径问题,可能是一个依赖问题。使用像DependancyWalker这样的工具来找到罪魁祸首。