나는 borland에있는 VCL 응용 프로그램을 만들었습니다. 내 프로젝트에는 이미 정의 된 메소드 (내장 된 파이썬이 구현 된 메소드를 호출하는 버튼이 내 애플리케이션에 포함되어 있음)에 임베디드 Python을 구현 한 파일이 있습니다. 컴파일하면 빌드가 성공적입니다. 하지만 내 응용 프로그램을 실행하고 버튼을 클릭하면 런타임 오류가 표시됩니다 : " 'PYTHON25.DLL'모듈의 주소 1E091375에서 액세스 위반."00000004 주소 읽기 ". 도와주세요. 전에 파이썬을 사용한 적이 없습니다. 내 프로그램 :파이썬을 C++에 임베드
#pragma hdrstop
#include <fstream>
#include <iostream>
#include <iomanip>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "Python.h"
#include "Unit1.h"
#include "Unit2.h"
#pragma link "python25_bcpp.lib"
//---------------------------------------------------------------------------
#pragma package(smart_init)
bool callHelloWorld(int intVal)
{
char fName[] = "Hello"; //file name
char cFunc[] = "hello"; //method name
char *pfName, *pcFunc;
PyObject *pName, *pModule, *pDict, *pFunc ;
pfName = fName;
pcFunc = cFunc;
Py_Initialize();
pName = PyString_FromString(pfName);
pModule = PyImport_Import(pName);
pDict = PyModule_GetDict(pModule);
pFunc = PyDict_GetItemString(pDict, pcFunc);
if (PyCallable_Check(pFunc))
{
PyObject_CallObject(pFunc, NULL);
} else
{
PyErr_Print();
}
// Py_DECREF(pModule);
// Py_DECREF(pName);
Py_Finalize();
return 0;
}
저는 Borland C++에서 다른 호출 규칙 (fastcall?)을 사용하고 있음을 기억합니다. python.dll이 동일한 컴파일러를 사용하여 컴파일 되었습니까? – cdarke
python25.dll은 C : \ Windows \ SysWOW64에 있습니다. 나는 그것을 컴파일하지 않았다. –
이것이 도움이 될지 모르겠지만, 파이썬 파일 중 일부가 누락되었다고 생각합니다. 다른 컴퓨터에서 내 프로그램을 컴파일 할 때 동일한 오류가 발생하는 것을 기억합니다. 하지만 제 경우에는 MFC 프로그램을 사용하고 파이썬 스크립트를 사용하여 MFC DLL에 액세스하고있었습니다. 파이썬을 다시 설치해보십시오. – Neophile