Нарушение прав доступа при встраивании Python в Windows - PullRequest
2 голосов
/ 02 августа 2011

Мне нужна помощь, чтобы понять, почему встроенный 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;
}

Мои исследования привели меня сюда .Я решил, что моя установка на python (2.6.5) скомпилирована для использования msvcr90.dll, а программа встраивания использует msvcr100.dll.

Первое, что привлекло мое внимание, было то, что Py_GetPythonHome() обязательно проверяет переменные среды,одна из отмеченных проблем наличия нескольких сред выполнения MS C, используемых в одном приложении.Однако в соответствии с примером MSDN, я должен только ожидать, что значения переменных среды не будут синхронизированы, а не вызовут нарушение прав доступа.

Пожалуйста, помогите мне понять!

...