【问题标题】:determine 32-bit OS or 64-bit OS from c/c++ application从 c/c++ 应用程序确定 32 位操作系统或 64 位操作系统
【发布时间】:2017-07-17 21:19:57
【问题描述】:

我在 Microsoft Visual Studio 上构建了 32 位应用程序,现在我必须在 64 位操作系统上运行此应用程序,并且我的要求是基于操作系统(32 位或 64 位)我需要加载一个 dll ,我只是在 Visual Studio 中寻找一个宏,它告诉我我正在运行我的应用程序的当前操作系统位数(32 位或 64 位)。

我在 MSVS 中找到了 _WIN32 和 _WIN64 宏,但在 VS2008 和 VS2010 中似乎有一个 bug,它们没有在其中定义 _WIN64。

Visual Studio () 中是否有一种方法可以确定我是在 64 位操作系统还是 32 位操作系统(不是 32 位应用程序或 64 位应用程序)上运行我的应用程序,更具体地说,我正在寻找一个宏而不是 IsWow64Process() 之类的函数??

【问题讨论】:

  • 请注意,您的 32 位应用程序无法加载 64 位 DLL。操作系统无关紧要。
  • 该错误是 IDE 错误,而不是编译器错误。编译时,宏存在。但是,缺少_WIN64 并不会阻止用户在 64 位 Windows 上运行该程序。这就是IsWow64Process() 的用武之地。
  • @MSalters 我没有说我正在加载 64 位 DLL,我只想加载不同的 32 位 DLL。
  • @Durga:在安装程序中解决这个问题不是更容易吗?

标签: c++ windows visual-studio visual-studio-2008 windows-10


【解决方案1】:

您不可能有一个预处理器宏来告诉您是在 32 位还是 64 位 Windows 上运行。预处理器宏的值是在编译时定义的。同一个可执行文件(只编译一次),可以在 32 位和 64 位 Windows 上运行。

您将不得不使用运行时函数。

请注意,这整个事情听起来像是一个 X-Y 问题; Microsoft 竭尽全力避免您需要知道操作系统是什么。我建议针对您的真正问题提出另一个问题。

【讨论】:

    猜你喜欢
    • 2018-04-20
    • 2011-07-07
    • 2013-08-29
    • 2012-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-26
    • 2011-02-20
    相关资源
    最近更新 更多