J'ai créé une application VCL en C++, borland. Dans mon projet il y a un fichier où j'ai implémenté python embarqué dans les méthodes définies dans le même (mon application contient un bouton qui appelle la méthode dans laquelle python embarqué est implémenté). quand je compile, ma construction est réussie. mais quand j'exécute mon application, et que je clique sur le bouton, l'erreur d'exécution s'affiche: "Violation d'accès à l'adresse 1E091375 dans le module" PYTHON25.DLL ", lecture de l'adresse 00000004". aidez s'il vous plaît. Je n'ai jamais utilisé Python auparavant. mon programme:intégration de python dans 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;
}
Il me semble me rappeler que Borland C++ utilise une convention d'appel différente (fastcall?). Est-ce que votre python.dll est compilé en utilisant le même compilateur? – cdarke
le python25.dll était dans C: \ Windows \ SysWOW64. Je ne l'ai pas compilé. –
Je ne sais pas si cela aiderait ou non, mais je pense qu'il vous manque certains des fichiers python. Je me souviens avoir eu la même erreur en essayant de compiler mon programme sur une autre machine. Mais dans mon cas, j'utilisais un programme MFC et j'accédais à ma DLL MFC en utilisant le script python. Essayez probablement de réinstaller python. – Neophile