【问题标题】:C++ linking to python 3.2 x64 application unable to loadC++ 链接到 python 3.2 x64 应用程序无法加载
【发布时间】:2011-03-09 11:48:39
【问题描述】:

这是我猜几个部分的问题。

我正在阅读有关嵌入 python 解释器的文档。我已经很好地编译和链接了所有东西,只有当我运行它时应用程序崩溃(具体来说它无法加载,所以它甚至还没有开始运行)。

我正在运行 Windows 7 Professional 64 位。我正在用 msys 编译最新的 mingw 夜间版本(它与安装程序一起打包,所以我相信那里没有兼容性不匹配)。使用默认存储库 python 3.1 和 build-essential 工具,相同的代码在 Ubuntu 10.10 上编译良好。

到目前为止,在我的研究中,我认为这个“可能”是链接 32 位应用程序(据我所知,mingw 使用 32 位)与 64 位库(python dll)之间的问题。

我可以发布完整的代码,但是由于这往往是一个链接/运行问题,我只包含了 makefile 开始。从下面的 makefile 中,我已将 Python3.dll 从 C:\Python32\DLLs 复制到我的项目目录中。另外值得注意的是,我必须创建自己的 .def 然后从 DLL 创建 .a 才能链接(否则找不到符号)。这可能是我的问题的根源吗?

在运行 a.exe(从命令行和资源管理器)时,我会收到一个标准警报窗口:

应用程序错误:应用程序无法正确启动 (0xc000007b)。单击“确定”关闭应用程序。

如果我错了,请纠正我,但这表明我的可执行文件在某种程度上已损坏。

我已经测试了我的编译器/链接器,以确保它不是编译器/链接器问题。它包括并且当应用程序不使用 python 时,这不会在编译、链接或运行时引发任何错误。

感谢您对此事的任何帮助或说明。这让我真的很难过。 个人电脑

生成文件

FILE= main.cpp
LIBS=  -lpython3
LIBPATH= -L/c/python32/libs
INCLUDEPATH = -I/c/python32/include
CPP=g++
FLAGS = -g

build:
    $(CPP) $(FLAGS) $(FILE) $(LIBS) $(LIBPATH) $(INCLUDEPATH)

【问题讨论】:

    标签: c++ python g++ python-3.x windows-7-x64


    【解决方案1】:

    如果 python3.dll 肯定是 64 位的,而您的应用程序肯定是 32 位的,那么这将不起作用。您不能从 32 位应用程序链接到 64 位 dll。指针将无法工作between the two models

    【讨论】:

    • 我认为发生的事情是 python 是 64 位的 - 但没有指定它是。因此,我必须从源代码编译它,或者将我的工具集更新为 64 位(mingw-w64?)是时候进行更多的刺激了。
    • 这很麻烦。只需使用 32 位版本的 Python。
    • 我同意。只是我不知道它是 64 位 python。我将不得不重新安装/新安装到不同的 x86 目录。
    【解决方案2】:

    您不能在同一进程中混合使用 32 位和 64 位图像。结尾。的。故事。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-15
      • 1970-01-01
      • 2021-12-09
      • 2014-03-12
      • 1970-01-01
      • 1970-01-01
      • 2014-10-27
      • 1970-01-01
      相关资源
      最近更新 更多