gpt4 book ai didi

c# - 从 32 位更改为 64 位

转载 作者:行者123 更新时间:2023-11-28 02:32:58 25 4
gpt4 key购买 nike

我在 Visual Studio 2012 中的解决方案包含三个项目。一个 WinForms 项目和两个 VC++ 项目(库)。最初所有开发都是在 Windows 7 Professional 32 位上完成的。但是最近,我的系统更新到了 Windows 7 Professional 64 位。

我的应用程序在 Active Solution Platform 设置为 AnyCPU 的情况下成功构建和运行。但是当应用程序启动并且我执行一些调用底层 VC++ 库的操作时,应用程序崩溃并出现 dll 的 FileNotFoundException

那么我应该将 Active Solution Platform 更改为 x64 吗?还是让它保持原样好。

我已尝试将 Active Solution Platform 更改为 x64。但 dll 不构建。我收到一个 error LNK2019: unresolved external symbol

我以前从未使用过 64 位。我应该怎么做才能构建我的应用程序?

未找到的符号存在于第三个 VC++ 项目中,该项目是一个静态库。

WinForms依赖dll,dll依赖静态库。

更新:

当构建配置设置为 AnyCPU 时,我得到一个 System.BadImageFormatException。在附加信息下,它说无法加载文件或程序集 dll_name,....。试图加载格式不正确的程序。

最佳答案

AnyCPU 平台选择构建独立于 CPU 的 .NET 代码。这意味着它将在 32 位 Windows 上作为 x86 代码运行,但在 64 位 Windows 上作为 x64 代码运行。

Visual C++ 没有任何与 AnyCPU 等效的东西。这些项目必须是 32 位或 64 位的。据推测,您的解决方案配置为在选择 AnyCPU 时将它们构建为 32 位 DLL。这意味着在 64 位机器上,.NET 代码将以 64 位运行,但 DLL 仍将是 32 位,并且由于 64 位进程无法加载 32 位 DLL,因此它赢了'工作。

您可以通过将 Active Solution Platform 设置为 x64 或将其设置为 x86 来解决此问题。或者。除非您有特定原因希望代码以 x64 运行(例如,它需要更大的地址空间,或者它在 32 位平台上性能不佳),否则选择 x86 通常更简单,因为这样可以在 32 位和 64 位 Windows 上,并且不需要对最初为 32 位 Windows 开发的现有代码进行任何修改。

也可以在单个解决方案中构建 32 位和 64 位 DLL,并在运行时加载合适的 .NET 代码。然而,这更复杂。

关于c# - 从 32 位更改为 64 位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28469397/

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