如何为 64 位 Windows 编译现有的 posix 代码?

2024-04-27

我可以使用 Cygwin 或 MinGW,但我需要最终得到 64 位代码,而不是 32 位。这是因为我将从 64 位托管 C# 调用 DLL。我似乎找不到关于设置这些工具来创建 64 位二进制文​​件的良好参考。另外,如果 GCC 是版本 4,而不是我的 Cygwin 安装附带的版本 3,那就太好了。

另一种选择是某种形式的进程间通信。我会研究这个,但我上面列出的是我真正想要的。


The 64位MinGW http://sourceforge.net/projects/mingw-w64基于(刚刚发布的)gcc-4.4.0,可能是您最好的选择。 (由于 sourceforge.net 上的 mingw-w64 项目正在迁移到 mingw-w64.org,因此最好使用mingw-w64.org http://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/x 64 可执行文件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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何为 64 位 Windows 编译现有的 posix 代码? 的相关文章

随机推荐

  • 你怎么知道无限长的承诺链何时完全结束?

    我试图使用 Promise 强制序列化一系列 Ajax 调用 用户每次按下按钮时都会进行这些 Ajax 调用 我可以成功地序列化操作 如下所示 sample async function real world this is an Ajax
  • 在 MS 企业库或 Log4net 等第 3 方组件上创建包装器是一个好习惯吗?

    这更像是一个很好的练习题 我想提供不同的通用库 如日志记录 缓存等 有很多第三方库 如 MS 企业库 log4Net NCache 等 我想知道直接使用这些服务或在每个服务上创建包装器并使用 DI 在代码中注入该服务是否是一个好习惯 reg
  • C++ iostream 的自定义操纵器

    我想为 ostream 实现一个自定义操纵器 以对插入流中的下一个项目进行一些操作 例如 假设我有一个自定义操纵器quote std ostringstream os std string name Joe os lt lt SELECT
  • pandas 中的索引对象——为什么 pd.columns 返回索引而不是列表

    来自 R 背景 我发现 非常高 使用Indexpandas 中的对象有点令人不安 例如 如果train是一个pandas DataFrame 有什么特殊原因吗train columns应该返回一个Index而不是一个列表 如果它是一个Ind
  • 如何在 Android 上检测从 3g 到 H+ 的网络类型更改

    通过连接管理器和广播接收器 我能够获取连接和断开连接事件 如下所述埃里克的帖子在这里 https stackoverflow com questions 1783117 network listener android 我想知道的是网络连接
  • IntelliJ IDEA 在项目 jar 中查找类

    我看过一些关于通过在目录中搜索 jar 来查找类的帖子 这让我认为 IntelliJ IDEA 中一定有一个工具可以做到这一点 有人知道这样的工具以及如何使用它吗 如果 jar 文件作为项目依赖项导入 您可以键入cmd n然后搜索它
  • ROS中spin和rate.sleep的区别

    我是 ROS 新手 正在尝试了解这个强大的工具 我很困惑spin and rate sleep功能 谁能帮助我了解这两个功能之间的区别以及何时使用每个功能 ros spin and ros spinOnce 负责处理通信事件 例如到达的消息
  • Java EE / Jakarta EE 支持 Java 模块系统吗?是否可以使用Java模块系统制作Web应用程序?

    我正在使用 Java 11 和 Maven 3 6 1 构建我的第一个模块化应用程序 我的IDE是IntellijIDEA 2019 1 3 我添加了一个模块 app 并添加module info java 但我很困惑 因为即使我向应用程序
  • fork 和现有线程?

    在linux系统上 子进程查看现有线程的方式与父进程相同吗 int main create thread 1 int child pid fork if 0 child pid else 由于子进程复制了整个地址空间 因此线程的状态会发生什
  • 如何在节点中转义 shell 命令的字符串?

    In nodejs http nodejs org 执行外部命令的唯一方法是通过 sys exec cmd 我想调用外部命令并通过标准输入为其提供数据 在nodejs中 似乎还没有一种方法可以打开命令 然后将数据推送到它 仅执行并接收其标准
  • 查找游戏对象的子对象的子对象

    我在场景中有一个预制件 我想访问该预制件的子项 该预制件的结构如下 PauseMenu UI Resume TextField TextField2 UI Side Back lt I need this child UI Home tra
  • 如何 adb 提取 SD 卡中文件夹中的所有文件

    我的 SD 卡中有一个文件夹 mnt sdcard Folder1 Folder2 Folder3 jpg 文件夹 1 和文件夹 2 的名称保持不变 文件夹 2 内有文件夹 3 4 5 等 我想使用 adb 将所有 jpeg 文件而不是所有
  • 具有多个数据源的 Spring Boot + JNDI

    我尝试创建一个 Spring Boot 应用程序 它连接两个数据源 我能够通过遵循 Spring 文档来实现这一目标 但我面临的挑战是实现以下目标 通过使用 Spring Boot DataSourceAutoConfiguration 通
  • Baqend 中的关系和 ACL

    我试图弄清楚 baqend 是否可以做到这一点 或者甚至是正确的方法 我有很多用户 使用 Baqend 附带的默认用户帐户系统 其中一些用户将是公司的管理员 一家公司将拥有 1 到 5 名管理员用户 有一个单独的数据类 其中包含公司的记录和
  • 数据库连接未使用 jpaFlowExecutionListener 关闭

    我正在使用 Spring Web Flow 来构建应用程序 我正在利用Flow Managed Persistence Context因此实体管理器在流程执行期间保持打开状态 我可以访问延迟加载的属性 类似于OpenEntityManage
  • 创建 QT 应用程序作为 Windows 上现有基于控制台的应用程序的 GUI

    我正在尝试使用 Qt 为现有应用程序设置一个 GUI 该应用程序旨在在 Windows 命令行中运行 这不仅仅是运行应用程序system 命令 但我需要通过命令行与现有应用程序交互 The system 当我启动现有的可执行文件时 命令会阻
  • sql 查询不适用于 order by

    这是我原来有效的查询 Select FROM story st sentences s speaker sp WHERE st lesson id 1 AND st speaker id sp speaker id AND st sente
  • 是否有一个排序的java集合可以处理重复项?

    我需要一个行为类似于 C multimap 的集合 但我还需要能够通过一系列键获取元素 你可以看看谷歌收藏 http code google com p google collections 它有多种实现MultiMap
  • 泛型和实体框架:如何根据列值返回不同的类型

    我们有一个人员表 其中存储不同类型的人员 买方 卖方 代理人等 我们的 ORM 是实体框架 CodeFirst CTP5 我们使用存储库模式来实现良好的 TDD 和模拟 在 PersonRepository 中 我想返回特定类型 这样我就可
  • 如何为 64 位 Windows 编译现有的 posix 代码?

    我可以使用 Cygwin 或 MinGW 但我需要最终得到 64 位代码 而不是 32 位 这是因为我将从 64 位托管 C 调用 DLL 我似乎找不到关于设置这些工具来创建 64 位二进制文 件的良好参考 另外 如果 GCC 是版本 4