[Builder c++] exportation de composant vcl contenu dans une dll

exportation de composant vcl contenu dans une dll [Builder c++] - C++ - Programmation

Marsh Posté le 28-05-2002 à 14:09:17    

salut,
 
j'essaye d'exporter un formulaire
contenu dans une DLL pour l'utiliser à partir du prgm
principal  
cela compile
mais lorsque j'execute ça me met
l'erreur suivante :
" classe d'exception EAccessViolation avec le message 'violation
d'accès à l'adresse 0022BA2A dans le module 'DLLVCL.dll'.Lecture
de l'adresse 7B0825F3.' "
 
si qq un pouvait m'aider
je lui en serait éternellemnt reconnaissant
 :jap:

Reply

Marsh Posté le 28-05-2002 à 14:09:17   

Reply

Marsh Posté le 28-05-2002 à 14:12:35    

Tu veux faire quoi exactement ? Utiliser dans un programme un composant VCL défini dans un DLL ? Il me semble que ce n'est pas possible...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 28-05-2002 à 14:16:28    

oui c ce que je veux faire
 :cry:

Reply

Marsh Posté le 28-05-2002 à 14:46:56    

Définir un composant dans un DLL ca conduit inévitablement à un plantage... Tu peux utiliser un form à la limite mais pas un composant.
 
Par contre tu peux essayer en ActiveX  :D

Reply

Marsh Posté le 29-05-2002 à 09:57:35    

oui mais ce que je veux faire
c à partir d'une fenêtre MDI principale,
ouvrir une fenêtre MDI fille  
ça c simple
mais le pb c que ma fenêtre MDI fille est dans une dll
et la ça plante à l'execution
(j'ais essayé de la mettre dans un paquet mais même résultat)
 :cry:

Reply

Marsh Posté le 29-05-2002 à 10:23:41    

ça ça devrait fonctionner je crois, une fenêtre dans une DLL
maintenant faut voir comment tu fais l'appel et la construction de la fenêtre ;)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 29-05-2002 à 10:37:54    

voici un exemple simplifié de ce que je faire
 
dans le ccp de ma fenêtre MDI principale, je fais :
 
#include <vcl.h>
 
#pragma hdrstop
 
#include "TFom1.h"
#include "TForm2.h"
 
//---------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
void __fastcall TForm1::Nouveau1Click(TObject *Sender)
{
        TForm2 * child;
        child = new TForm2(this);
        child->Show();        
}
 
et la déclaration de TForm2 ds la dll est :
 
ifndef TForm2H
#define TForm2H
//---------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------
class __declspec( dllexport ) TForm2 : public TForm
{
__published: // Composants gérés par l'EDI
private: // Déclarations de l'utilisateur
public:  // Déclarations de l'utilisateur
        __fastcall TForm2(TComponent* Owner);
};
//---------------------------------------------------------------
extern PACKAGE TForm2 *Form2;
//---------------------------------------------------------------
#endif

 

[jfdsdjhfuetppo]--Message édité par ashram79 le 29-05-2002 à 10:38:33--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 29-05-2002 à 10:41:57    

:heink: c'est très bizarre la façon dont tu utilise cette dll...
enfin c'est peut-être normal

 

[jfdsdjhfuetppo]--Message édité par antp le 29-05-2002 à 10:43:32--[/jfdsdjhfuetppo]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 29-05-2002 à 10:48:49    

je suis obligé de faire comme ça par rapport
à ce qui va être fait ensuite
 
PS : j'ais oublié de préciser que la dll n'est pas chargée dynamiquement mais en statique

Reply

Marsh Posté le 29-05-2002 à 11:00:27    

je me doute bien que c'est statique, mais je ne savais pas qu'on pouvait utiliser une classe d'une DLL comme ça...  
je pense que tu dois appeler une fonction de ta DLL qui elle va créer Form2... Mais ce n'est qu'une supposition, vu que je n'ai pas beaucoup utilisé de DLL (et juste en dynamique) je risque de t'induire en erreur...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 29-05-2002 à 11:00:27   

Reply

Marsh Posté le 29-05-2002 à 11:05:30    

exporter des classes en statique c possible  
( j'ais déjà essayé et ça marche bien)
mais là le pb c que c des composants graphiques borland

Reply

Marsh Posté le 29-05-2002 à 11:51:14    

Tu as essaye sans les __fastcall ?
c'est compatible avec des appels entre Prog et Dll ?

Reply

Marsh Posté le 29-05-2002 à 11:56:14    

sans les __fastcall il ne compile même pas
 :cry:  :cry:

 

[jfdsdjhfuetppo]--Message édité par ashram79 le 29-05-2002 à 11:57:17--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 29-05-2002 à 12:06:39    

Sinon, question bete...
le dllexport, il devient bien un dllimport pour le prog principal ?

Reply

Marsh Posté le 29-05-2002 à 13:14:54    

oui oui

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed