使用 IsWow64Process 而不是单独编译
Using IsWow64Process instead of compiling separately
只是想知道函数'IsWow64Process'的使用是否比为64位操作系统单独编译它更好。仍然需要更改某些地址的偏移量,以便程序实际上保持不变。
IsWow64Process()
只对32位进程有意义,因为它说明了所述进程是否在64位系统上运行。该过程仍然是完全 32 位的,具有所有后果,例如,它只能加载 32 位 DLL,并且只能使用 2 GB 的内存。
请注意,在许多情况下,将代码设为 64 位并不值得,尤其是当您还需要交付 32 位代码时,尤其是当几乎所有版本的 Windows 都允许运行 32 位代码时。有关更多详细信息,请参阅此答案。
IsWow64Process()
告诉你,你是一个在64位系统上运行的32位应用。它不会使您成为 64 位应用程序。
IsWow64Process
不是独立于平台的。
我通过查看std::ptrdiff_t
的大小来确定位宽:
constexpr /*remove if compiler does not support*/ unsigned long GetProcessBits()
{
return sizeof(std::ptrdiff_t) /*size in bytes*/ * 8U;
}
如果在 32 位模式下运行,这将返回 32,如果在 64 位模式下运行,这将返回 64。
相关文章:
- 如何在Visual Studio中为CUDA项目启用单独的编译
- 混合单独编译的对象
- 为什么<<低;和 cout<<v.begin;单独给出错误,但 cout <<(lower.begin());没有给出任何错误,并使代码易于编译
- cmake cuda在Windows上单独的编译静态LIB链接错误,但在Ubuntu上没有
- 是否可以仅通过编写 debian/rules 来编译两次并构建单独的软件包?
- GC/C++ 从编译中省略了 main,在单独的文件中提供 main
- 将 .NET C# 程序集成到已编译(非托管)C++程序中(无需执行单独的.exe文件)
- 当我单独编译并链接时,函数的性能为什么会有所不同
- C++单独编译,不同源文件使用相同函数
- 无法从单独的.cpp使用模板化成员编译/链接类
- 使用单独的Boost库进行编译,无需安装Boost
- 将模板代码分解为单独的编译单元
- C++ - 这个单独的编译代码有什么问题?
- 如何在 Linux 中的单独/包含目录中编译额外/更新的库以及新程序
- 将多个C++文件编译在一起而不是单独编译
- 使用 IsWow64Process 而不是单独编译
- C++单独编译
- Rust中泛型的单独编译
- 单独编译C++Xcode 5.1
- 使用单独编译时返回一个typedef类型