【问题标题】:problem with compiling 64 bt dll on a 32 bit windows via TDM-GCC通过 TDM-GCC 在 32 位 Windows 上编译 64 bt dll 的问题
【发布时间】:2019-07-31 01:18:53
【问题描述】:

我使用 32 位 Windows,而我的助手使用 64 位。我们都使用 gcc(我专门使用 tdm-gcc。据我所知,我的助手使用 qt,它也使用 gcc)。我想以简单的.dll 的形式编写一个非常简单的插件,供我的助手在她的应用程序内部使用。为此,我只需将 Windows 32(如 32 位 XP)的 .dll 编译为 Windows 64(如 win 7 或 10)的 .dll

我发现-m64 选项可以工作。但是,当我编译它并且她链接它并尝试调用我的函数时,它显示这个应用程序使用这个插件.dll 我已经制作(在带有-m64 选项的 tdm-gcc 的 32 位窗口上)静默崩溃(程序结束并且不生成输出)。

这有什么问题?我们正在做的测试很简单,就像导出一个只返回 232323 的函数并尝试在应用程序端接收和打印它 - 但仍然不起作用。我的猜测是这个 64 位 .dll 是错误的(依赖walker 显示对 kernel32 的依赖,不是 32 位特定的吗?)

除了输入-m64 之外,我还应该做些什么来使我的插件编译为 64 位并在那里正常工作吗?

【问题讨论】:

    标签: windows gcc dll 32bit-64bit tdm-mingw


    【解决方案1】:

    它显示它很可能有效.. 她无法在 QT 中将其链接到我的未知原因(我们远程工作,我无法检查)但她成功地动态链接它,所以看起来 -m64 实际上就足够了

    【讨论】:

    • 您是否为这两种架构生成了单独的导入库?仅仅因为导出函数的列表相同并不能使导入库可互换。还是您根本不使用导入库并信任 gcc 链接器来分析 DLL 导出?
    • Ben Voigt - 我没有生成导入库,gcc 通常不需要那个 -llibname,他只是链接.....这是我的女助理和 QT 的问题,我不知道它是什么。 ...我只是在 -m64 应该工作时感到困惑,现在它显示它在动态链接时工作......所以我的疑问得到了回答
    猜你喜欢
    • 1970-01-01
    • 2022-01-13
    • 2011-12-12
    • 1970-01-01
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    • 2017-01-21
    • 2021-07-05
    相关资源
    最近更新 更多