gpt4 book ai didi

c# - VS2012 在 x64 操作系统中使用 "Any CPU"编译为 x86

转载 作者:行者123 更新时间:2023-11-30 20:50:04 25 4
gpt4 key购买 nike

我有一个包含 C# 项目和 C DLL 的解决方案。解决方案设置为“混合平台”,C# 项目设置为“任何 CPU”。

当 DLL 设置为针对 x64 进行编译时,我遇到了崩溃。但是当 DLL 设置为针对 x86 进行编译时,一切正常。

操作系统是Windows7 x64。

无论我尝试哪种方式,Environment.Is64BitProcess 都会给出 false。

我的理解是“任何 CPU”默认情况下会编译为 x64,因为操作系统是 x64。显然,我错了。

谢谢你们。

最佳答案

My understanding is that "Any CPU" would compile to x64 by default

不,它会编译为“任何 CPU”。它的运行方式取决于执行它的机器。因此,如果您在 64 位 CPU 上运行它,那么是的,它将作为 64 位运行。但是,从崩溃来看,听起来您的 C dll 是 32 位的,或者您正在使用 32 位 API 调用。在这种情况下,您需要将其编译为 32 位。请注意,在 VS2013 中,“任何 CPU”也有一个“首选 32 位”选项,它将以 32 位运行,除非 32 位根本不可用。大多数人都希望关闭;p

另请注意,如果这是一个(来自 dll 标签),它还取决于进程是 32 位还是 64 位。

关于c# - VS2012 在 x64 操作系统中使用 "Any CPU"编译为 x86,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22831634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com