2011-03-09 69 views
0

这是我想在几个部分的问题。C++链接到python 3.2 x64应用程序无法加载

我正在通过嵌入python解释器的文档工作。我已经完成了编译和链接的一切,只有应用程序崩溃时才运行它(具体来说,它无法加载,所以它甚至没有开始运行)。

我正在运行Windows 7 professional 64位。我正在编译最近一次的mingw编译,其中包含msys(与安装程序一起打包,因此我认为没有兼容性不匹配)。使用默认存储库python 3.1和build-essential工具,相同的代码在Ubuntu 10.10上编译得很好。

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

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

在运行A.EXE(来自命令行和资源管理器)我接收标准警报窗口:

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

纠正我,如果我错了,但这表明我的可执行文件在某种方式损坏。

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

感谢您提供任何帮助或解决问题。这让我真的很难过。 pcnerd

的Makefile

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) 

回答

0

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

+0

我认为发生了什么是python是64位 - 但没有指定它是。因此,我将不得不从源代码编译它,或者将我的工具集更新到64位(mingw-w64?)时间多一些。 – pcnerd 2011-03-15 00:34:04

+0

这很麻烦。只需使用32位版本的Python。 – 2011-03-15 00:37:08

+0

我同意。只是我不知道它是64位的Python。我将不得不重新安装/新安装到不同的x86目录。 – pcnerd 2011-03-16 23:15:40

0

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

相关问题