C ++链接到python 3.2 x64应用程序无法加载

时间:2011-03-09 11:48:39

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

我想这是一个问题。

我正在编写有关嵌入python解释器的文档。我已经完成了编译和链接的所有内容,只有应用程序在运行时崩溃(特别是它无法加载,因此它甚至没有开始运行)。

我正在运行Windows 7专业版64位。我正在编译mingw的最新夜间版本,使用msys(与安装程序一起打包,因此我认为没有兼容性不匹配)。使用默认存储库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时,这不会在编译,链接或运行时抛出任何错误。

感谢您提供有关此事的任何帮助或指示。这让我真的很难过。 pcnerd

生成文件

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)

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您无法在同一进程中混合使用32位和64位图像。结束。的。故事。