在Visual Studio 2010中将项目从Win32移植到x64平台后加载了错误的ComCtl32.dll

时间:2014-06-10 18:19:07

标签: c++ visual-studio-2010

我已将项目从Win32移植到x64平台。我更改了所有依赖项,因此我可以顺利地构建项目。但是,一旦我启动可执行文件,我就会收到错误(0xc000007b)

使用依赖性walker,我可以看到,ComCTL32.dll在某个时刻加载了x86而不是x64

一旦我转动清单生成(linker->Manifestfile),它就可以了。但那不是解决方案。

所以我的问题是:Visual Studio 2010中的哪个位置可以设置正确的DLL ComCtl32.dll的路径。

2 个答案:

答案 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这样的工具来找到罪魁祸首。