Как напечатать название DLL, которая не может импортировать? - PullRequest
0 голосов
/ 14 февраля 2019

В моем приложении MFC я использую приведенную ниже строку кода для импорта модуля Python.

pyImportedModuleObj = PyImport_Import(pyNameFilenameObj);

Даже если путь правильный, я получаю NULL.Это из-за исключения Python.Я попытался напечатать фактическое исключение Python.

    bool CheckPythonError() {
        if (PyObject *perr = PyErr_Occurred()) {
            PyObject *errobj, *errdata, *errtraceback, *pyerr, *pydata, *pytrc;

            PyErr_Fetch(&errobj, &errdata, &errtraceback);
            pyerr = NULL;
            pydata = NULL;
            CString save_error_type, save_error_data, save_traceback;
            if (errobj != NULL &&
            (pyerr = PyObject_Str(errobj)) != NULL &&     /* str(object) */
            (PyString_Check(pyerr))) {
                save_error_type = PyString_AsString(pyerr);
                pydata = PyObject_Str(errdata);
                PyString_Check(pydata);
                save_error_data = PyString_AsString(pydata);
                pytrc = PyObject_Str(errtraceback);
                if (errtraceback) {
                    save_traceback = PyString_AsString(errtraceback);
                }
                else {
                    save_traceback = "No traceback available";
                }
            }
            else {
                save_error_type = "<unknown exception type>";
            }
            Py_XDECREF(pyerr);
            Py_XDECREF(pydata);
            //WI-29387 - Replaced MessageBox with g_MsgBoxMgr.ShowMessageBox
            MessageBox(NULL, save_error_type + "\n" + save_error_data, "Error", MB_OK | MB_ICONINFORMATION);
            return TRUE;
        }
        return FALSE;
    }

Я получаю ошибку Python, как показано ниже.

enter image description here

Мне нужно также напечатать имя DLL.Также, пожалуйста, посоветуйте мне, как решить эту ошибку.Заранее спасибо.

...