为什么Visual Studio中的64位项目仍然使用32位静态库? [重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

我在VS2017中创建了一个Win32程序,然后转为x64 Release Configuration。我发现使用%(AdditionalDependencies)评估的链接器中的输入库仍指向32位的那些库。

由于64位程序由于某些原因不能使用32位DLL,我认为这与它不能使用32位LIB的原因相同。

为什么Visual Studio中的64位项目可以使用32位静态库?困惑并等待任何建议。

Configuration changed but Dependencies didn't

visual-studio x86 64bit static-libraries static-linking
1个回答
1
投票

x86和x86-64是2种不同的体系结构,具有不同的指令集。每个指令集都像一个不同的语言,因此这些体系结构上的二进制文件不能链接在一起,因为一个体系结构不理解另一个的“语言”。即使使用相同的指令集,也可能有多个calling conventions,这意味着如果它们使用不同的约定,有时无法链接两个32位对象

动态库和静态库都是...库。它们必须在某个时刻(运行时或链接时)链接到编译对象。如上所述,在架构中链接不同的二进制文件是不可能的,这就是64位应用程序需要64位库的原因

© www.soinside.com 2019 - 2024. All rights reserved.