在Windows上嵌入Python时访问冲突

时间:2011-08-01 22:34:10

标签: python windows embed

我需要帮助理解嵌入式Python在Windows上这个非常简单的测试用例中崩溃的原因。

这很有效:

#ifdef _DEBUG
#undef _DEBUG
#include <Python.h>
#define _DEBUG
#endif

#include <iostream>

int main()
{
    Py_Initialize();
    std::cout << "Hello world!" << std::endl;
    PyRun_SimpleString("print(\"Hello world!\")");
    return 0;
}

此操作因访问冲突而崩溃:

#ifdef _DEBUG
#undef _DEBUG
#include <Python.h>
#define _DEBUG
#endif

#include <iostream>

int main()
{
    Py_Initialize();
    std::cout << "Hello world!" << std::endl;
    std::cout << Py_GetPythonHome() << std::endl;
    return 0;
}

我的研究让我here。我确定我的python安装(2.6.5)编译为使用msvcr90.dll,嵌入程序使用msvcr100.dll

引起我注意的第一件事是Py_GetPythonHome()肯定会检查环境变量,这是在单个应用程序中使用多个MS C运行时的标记问题之一。但是根据MSDN示例,我应该只期望环境变量值不同步,而不是导致访问冲突。

请帮助我理解!

0 个答案:

没有答案