C ++ Python закрывает мою программу

Я пишу небольшую программу с Direct3D и Python на C ++.
Я создал свое окно, и все работает нормально. Но если я попытаюсь вызвать «Py_Initialize ();» моя программа закрывается

(Закрывается кодом 1)
В чем проблема?

РЕДАКТИРОВАТЬ: Вот некоторые части моего кода.

MainIncludes.h

#include "Windows.h"#include <d3d9.h>
#pragma comment (lib, "d3d9.lib")

#include <d3dx9.h>
#pragma comment (lib, "d3dx9.lib")

main_d3dwindow.cpp

int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
HWND hWnd;
WNDCLASSEX wc;

ZeroMemory(&wc, sizeof(WNDCLASSEX));

wc.cbSize = sizeof(WNDCLASSEX);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WindowProc;
wc.hInstance = hInstance;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)COLOR_WINDOW;
wc.lpszClassName = L"WindowClass";

RegisterClassEx(&wc);

hWnd = CreateWindowEx(NULL,
L"WindowClass",
L"Program",
WS_OVERLAPPEDWINDOW,
300, 300,
800, 600,
NULL,
NULL,
hInstance,
NULL);

ShowWindow(hWnd, nCmdShow);
mainWindow = hWnd;

initD3D(hWnd);
init_python();

MSG msg;

while(TRUE)
{
while(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

if(msg.message == WM_QUIT)
break;

render_frame();
}

cleanD3D();

return msg.wParam;
}

main_python.cpp

#include "Python.h"void init_python() {
Py_Initialize();
}

3

Решение

Из того, что я знаю, Py_Initialize () просто инициализирует сам Python, но не как
интерактивный переводчик. На данный момент Python работает, но ждет
для выполнения команд. Кроме того, вы не должны забывать вызывать Py_Finalize () для освобождения памяти.

void pythonShell() {
Py_Initialize();
std::string pythonCommand = "execfile('python_script.py')"; // file or python command
PyRun_SimpleString(pythonCommand.c_str());
FILE* fp = stdin;
char filename[] = "Embedded";
PyRun_InteractiveLoop(fp, filename);
Py_Finalize();
}

Функция PyRun_InteractiveLoop () выполняет интерактивную оболочку из вашего кода C ++, если вы этого хотите.
Я думаю, что то, что здесь происходит, это то, что вы просто инициализируете Python, и все, он не имеет ничего общего, так как вы не передаете ему никакой скрипт / команду.

Надеюсь это поможет

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]