Bonjour,
mon probleme est le suivant.
J'ai dans une DLL (ENGINE) une class (REPORT) exportée.
Un application intégre cette dll. Un fonction de cette application appelle cette DLL en lui passant un tableau d'objets en paremetre du type de la class exportée dans la dll (REPORT*).
Le problème est je suivant.
J'inclue le .h de cet objet exporté dans le projet, tout fonctionne bien.
si j'effectue l'operation suivente :
REPORT* monReport = new REPORT();
delete monReport;
L'application plante.
Si j'effectue l'operation suivante :
REPORT* monReport = new REPORT[15];
delete[] monReport;
L'applicaion plante.
pour :
REPORT* monReport = new REPORT();
delete (void*)monReport;
L'application ne plante pas et la memoire est bien libérée.
---------------------------- code de l'objet exporté .h
#ifdef CAPACEMANAGEMENT_EXPORTS
#define CAPACEMANAGEMENT_API __declspec(dllexport)
#else
#define CAPACEMANAGEMENT_API __declspec(dllimport)
#endif
#include <string.h>
class CIReportBalancingGroup
{
public:
CAPACEMANAGEMENT_API CIReportBalancingGroup();
CAPACEMANAGEMENT_API virtual ~CIReportBalancingGroup();
CAPACEMANAGEMENT_API inline REPORTBALANCINGGROUP_BALANCINGGROUPNAME_TYPE_GET GetBalancingGroupName() {return m_balancingGroupName;}
CAPACEMANAGEMENT_API inline SetBalancingGroupName(REPORTBALANCINGGROUP_BALANCINGGROUPNAME_TYPE_SET p_balancingGroupName) {strcpy(m_balancingGroupName,p_balancingGroupName);}
private:
REPORTBALANCINGGROUP_BALANCINGGROUPNAME_TYPE m_balancingGroupName REPORTBALANCINGGROUP_BALANCINGGROUPNAME_SIZE;
};
---------------------------- code de l'objet exporté .cpp
#include "stdafx.h"
#include "CIReportBalancingGroup.h"
// constructeur
CAPACEMANAGEMENT_API CIReportBalancingGroup::CIReportBalancingGroup(){}
// destructeur
CAPACEMANAGEMENT_API CIReportBalancingGroup::~CIReportBalancingGroup(){}
Si quelqu'un trouve une idée car la, je ne vois pas comment faire circuler mes objets.
Dans l'attente, merci a tous.