如何编制现有posix码64位Windows?
题
我确定与使用Cygwin或MinGW,但我需要结束了64位代码,不是32位。这是因为我会打电话给DLL从64位管理。我似乎无法找到和好的参考文件设置的那些工具创建的64位的二进制文件。此外,这将是好的,如果海湾合作委员会是4版,不版3以来与我Cygwin安装。
一个替代办法将是某种形式的进程间的通信。我会研究,但是我提出了上面的是什么我真正想要的。
解决方案
的 64位MinGW, 基础上(刚刚发布的)海湾合作委员会-4.4.0,可能是你最好的选择。(由于mingw-w64项目sourceforge.net 被移动到mingw-w64.org 这是更好的使用 mingw-w64.org)
详细的说明:
1.下载的 存档
2.提取它的地方下cygwin。在我的情况下,顶级cygwin目录 C:\cygwin
, 我提取的包装成 mingw
目录,并结束了与以下内容 C:\cygwin\mingw
(这是可见的 /mingw
在cygwin:
$ ls -l /mingw
total 1
drwxr-xr-x+ 2 user None 0 May 10 08:32 bin
drwxr-xr-x+ 2 user None 0 May 10 05:45 include
drwxr-xr-x+ 2 user None 0 May 10 08:30 info
drwxr-xr-x+ 3 user None 0 May 10 08:30 lib
drwxr-xr-x+ 3 user None 0 May 10 05:45 libexec
drwxr-xr-x+ 4 user None 0 May 10 05:45 man
lrwxrwxrwx 1 user None 17 May 17 17:20 mingw -> x86_64-pc-mingw32
drwxr-xr-x+ 3 user None 0 May 10 04:16 share
drwxr-xr-x+ 5 user None 0 May 10 04:18 x86_64-pc-mingw32
3.现在编制一些用C++编码。我的使用:
// t.cc
#include <vector>
#include <string>
using namespace std;
int main()
{
vector<string> vs;
vs.push_back("abc");
}
和汇编这样的:
$ /mingw/bin/x86_64-pc-mingw32-g++ t.cc
4.最后,验证结果是Windows/x64可执行的,通过运行 dumpbin /headers a.exe
:
Microsoft (R) COFF/PE Dumper Version 7.00.9466
Copyright (C) Microsoft Corporation. All rights reserved.
Dump of file a.exe
PE signature found
File Type: EXECUTABLE IMAGE
FILE HEADER VALUES
8664 machine (AMD64)
10 number of sections
4A10AF9F time date stamp Sun May 17 17:45:19 2009
ABA00 file pointer to symbol table
EC4 number of symbols
F0 size of optional header
27 characteristics
Relocations stripped
Executable
Line numbers stripped
Application can handle large (>2GB) addresses
其他提示
的 海湾合作委员会的文档 说:
这些`-m'开关支持 除了上述在AMD x86-64 处理器在64位的环境。
-m32 -m64产生的代码,用于一个32位或64位的环境。32位的 环境组int长和指针 32位而产生的代码 运行上的任何i386系统。64位 环境组int32位和 长并指64位和 产生的代码,用于AMD x86-64 建筑。
注意,这就是要推动你疯了,我认为,如果mingw真的不会这样的说法,因为通常在Windows64长是32位的长长的64位指尺寸 类型。