Мне нужна помощь, чтобы понять, почему встроенный 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, я должен только ожидать, что значения переменных среды не будут синхронизированы, а не вызовут нарушение прав доступа.
Пожалуйста, помогите мне понять!