【问题标题】:Can I use 32bit dll or exe in 64bit python?我可以在 64 位 python 中使用 32 位 dll 或 exe 吗?
【发布时间】:2012-07-23 10:28:11
【问题描述】:

当我使用 CDLL 在 32 位 python 中调用 32 位 dll 时,它运行良好。 但是很遗憾在我的64位win7操作系统中只安装了64位python,调用的时候转过来:不是一个有效的win32应用!

我可以在 64 位 python 中使用 32 位 dll 或 exe 吗?还是我必须安装 32bit python 代替?

【问题讨论】:

标签: python dll 32bit-64bit


【解决方案1】:

64 位 EXE 无法加载 32 位 DLL。 (反之亦然:32 位 EXE 无法加载 64 位 DLL。)毕竟,它们无法就指针的大小达成一致——如果 EXE 分配的内存超出 4GB 边界并想要传递它会发生什么情况指向 32 位 DLL 的指针?

您必须:

  1. 制作 64 位版本的 DLL;
  2. 使用 32 位版本的 Python;或
  3. 将 DLL 托管在一个单独的(32 位)EXE 中,并使用某种形式的进程间通信从您的 64 位 Python 进程与其通信。

【讨论】:

  • 那么,64位版本的Python不能选择在32位模式下运行?就像64位win7可以执行32位应用程序
  • 64 位 Windows 可以运行 32 位进程,但每个单独的进程必须是 64 位或 32 位;您不能在一个地址空间中混合两者。如果要将应用程序作为 32 位运行,则必须将其编译为 32 位应用程序。 (又是那些指针大小。如果一个应用程序被编译为期望指针大小为 64 位,它将不适用于 32 位指针,反之亦然。)如果应用程序被编译为 32 位,它运行作为 32 位应用程序;如果它被编译为 64 位,它将作为 64 位应用程序运行(在 64 位操作系统上,在 32 位操作系统上根本不运行)。
  • 这是错误的,技术上 64 位 DLL/EXE 可以加载 32 位 DLL,反之亦然。 GitHub 上有一个库可以在 Windows 上执行此操作。一些装配级别的东西
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-11
  • 2011-04-16
  • 2019-08-20
  • 2012-06-06
  • 1970-01-01
  • 2023-03-13
  • 2016-06-04
相关资源
最近更新 更多