您“针对 Windows”,大概意味着您希望编译器生成能够以通常方式在 Windows 下运行的代码。为此,程序必须调用 Windows API 中的函数。Windows API实际上有三个版本:win16、win32 和 win64。由于您需要 64 位指针(“LP64”中的“P64”),因此唯一可能的目标是 win64。
为了调用 win64 函数,您必须包含windows.h. 该头文件使用long. 如果编译器切换为坚持将其long视为 64 位整数 (LP64) 而不是 32 位 (LLP64),那么编译器对如何调用函数和布置使用的数据结构的理解long将是错误的;生成的程序将无法正确运行。
同样的问题也适用于标准 C 和 C++ 库。如果链接到现有的已编译库(这是典型的情况),则对其的调用将不起作用(因为它将使用 LLP64)。如果您要使用假设的开关强制使用 LP64 从源代码构建一个,则其对 Windows API 的调用将会失败。
Cygwin使用 LP64 并生成在 Windows 上运行的二进制文件。尽管我上面写了这些,但这是可能的,因为 Cygwin DLL 充当 Cygwin LP64 环境和本机 win64 LLP64 环境之间的桥梁。假设您的代码最初是为 win32 编写的,现在您想要利用 64 位地址空间,而无需更改或只更改最少的代码,我怀疑这是最简单的路径。但我应该承认,我从未以这种方式使用过 Cygwin,因此可能存在我不知道的问题。
| 归档时间: |
|
| 查看次数: |
381 次 |
| 最近记录: |