22

当我使用 CDLL 在 32 位 python 中调用 32 位 dll 时,它运行良好。但不幸的是在我的64位win7操作系统中只安装了64位python,调用时轮流显示:它不是一个有效的win32应用程序!

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

4

1 回答 1

35

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

您必须:

  1. 制作 64 位版本的 DLL;
  2. 使用 32 位版本的 Python;或者
  3. 将 DLL 托管在单独的(32 位)EXE 中,并使用某种形式的进程间通信从您的 64 位 Python 进程与其通信。
于 2012-07-25T03:13:05.177 回答