Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
861 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  PBM d'inportation d'un DLL C++ dans Visual DOTNET

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

PBM d'inportation d'un DLL C++ dans Visual DOTNET

n°1077840
ronin111
Posté le 10-05-2005 à 14:38:51  profilanswer
 

Bonjour
 
J'utilise Visual .NET comme logicile de développement, mon problème est que je ne peut importer ma DLL C++ pour l'utiliser dans mon projet VB ?
J'aimerai que vous m'aidiez, je suis bloqué sur cette importation.
Par ailleurs, est-ce qu'il y a une solutino en passant par C# ?
 
Merci

mood
Publicité
Posté le 10-05-2005 à 14:38:51  profilanswer
 

n°1077859
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 10-05-2005 à 14:44:27  profilanswer
 

dllimport, p/invoke tout ça...


---------------
J'ai un string dans l'array (Paris Hilton)
n°1077882
ronin111
Posté le 10-05-2005 à 14:58:28  profilanswer
 

Harkonnen a écrit :

dllimport, p/invoke tout ça...


 
merci harkonen
ou dois-je ecrire ce mot cle : dllimport ? ca fait depuis deux mois ke je code sur VB .NET.
jaimerai que vous m'aidiez un peu plus.
 
merci

n°1077885
cesarr89
Posté le 10-05-2005 à 15:02:43  profilanswer
 

Citation :

ca fait depuis deux mois ke je code sur VB .NET


 

Citation :

jaimerai que vous m'aidiez un peu plus.


 
Tu veux pas 100 balles et un mars non plus...
http://www.google.fr/search?hl=fr& [...] %3Dlang_fr

n°1077908
ronin111
Posté le 10-05-2005 à 15:19:00  profilanswer
 

cesarr89 a écrit :

Citation :

ca fait depuis deux mois ke je code sur VB .NET


 

Citation :

jaimerai que vous m'aidiez un peu plus.


 
Tu veux pas 100 balles et un mars non plus...
http://www.google.fr/search?hl=fr& [...] %3Dlang_fr


 
merci de ton aide Mr JULES CESAR.
Wè mais cet DLL est composé de classes, et moi je voudrais savoir comment je pourrai instancier une classe de cet DLL.
 
Merci d'avance

n°1077919
cesarr89
Posté le 10-05-2005 à 15:25:37  profilanswer
 
n°1077965
HelloWorld
Salut tout le monde!
Posté le 10-05-2005 à 15:46:01  profilanswer
 

C'est du VB.Net ?
Si oui il faut coder ton projet en Managed C++, et ensuite tu pourras utiliser ton assembly sans soucy depuis VB ou C# ou autre.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°1078129
ronin111
Posté le 10-05-2005 à 16:55:37  profilanswer
 


 
Encore merci MR JULES CESAR.
 
Voici un  petit code que j'ai fait pour tester le le guide que tu m'a passé.
 
 Dim monAssembly As System.Reflection.Assembly = System.Reflection.Assembly.LoadFrom("C:\Documents and Settings\adirieh\Mes documents\AFIS\AFISprojet\AFISprojet\obj\Debug\moduleDBA_DBR.dll" )
 
        ' Nom de l'objet à créer
        Dim myClassName As String = "DBAdata"
 
        Dim MonType As Type
       
 
        For Each MonType In monAssembly.GetTypes()
            If m_sClassName = MonType.Name Then
                ' Un type correspond, création d'un objet
                Dim data = CType(Activator.CreateInstance(MonType),[#ff3800 SI JE MET LA CLASSE QUE JE CHERCHE, IL DIT QUE CET OBJECT N'EST PAS DECLARE [/#ff3800])
            End If
 
        Next
 
T'as une idée sur ça ?
 
merci

n°1078330
HelloWorld
Salut tout le monde!
Posté le 10-05-2005 à 19:08:31  profilanswer
 

Si c'est du C++ Natif c'est normal. La reflexion n'est pas utile dans ton cas. Tu ajoutes ton assembly comme référence et ça marche tout seul. Sauf que toi t'as pas une assembly mais une dll native. => Voir Managed C++...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°1079382
ronin111
Posté le 11-05-2005 à 14:07:30  profilanswer
 

HelloWorld a écrit :

Si c'est du C++ Natif c'est normal. La reflexion n'est pas utile dans ton cas. Tu ajoutes ton assembly comme référence et ça marche tout seul. Sauf que toi t'as pas une assembly mais une dll native. => Voir Managed C++...


 
Merci pour le conseil, j'ai donc décidé de faire une couche C++ managed qui encapsule ma bibliothèque de classes C++ standard.
Cependant ayant effectué ceci et que le code est lesuivant, jai eu une erreur d'ambiguite IServicePRovider
:
 
[.H]
namespace A
{
public __gc class wDBA
 {
 private:
  DBAdata* _data;
   
 public :
   wDBA(){
    _data = new DBAdata();  
   }
 
   ~wDBA(){}
   
   static void OpenConnexion(const string& user,  const string& pass, const string& name) ;
   static void CloseConnexion();
 
   
   
   
 };
 
}
 
[.CPP]
 
#include "wModuleDBA_DBR.h"
 
 
void wDBA::OpenConnexion(const string& user, const string& pass, const string& name){
 
 
 _data. m_connexion.OpenSession(user,pass,name);
 cout<<"OK OPEN CONNEXION DB"<<endl;
   
}
 
 
void wDBA::CloseConnexion() {
 
 _data->m_connexion.CloseSession();
 cout<<"OK CLOSE CONNEXION DB"<<endl;
 
 
}
 

mood
Publicité
Posté le 11-05-2005 à 14:07:30  profilanswer
 

n°1079598
HelloWorld
Salut tout le monde!
Posté le 11-05-2005 à 15:26:40  profilanswer
 

C'est dur comme ça. Utilise la balise [ cpp ].
Et donne l'erreur exacte + la ligne.
Tu vas avoir un problème avec string aussi. Faut utilise des types .Net, à savoir String*.
Ta classe MC++ doit juste encapsuler ta classe native. Elle se contente d'appeler les même fonctions, sauf qu'elle "marshall" = converti les types .Net <-> Natif (dans le cas de std::string par exemple).


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°1079623
ronin111
Posté le 11-05-2005 à 15:38:09  profilanswer
 

HelloWorld a écrit :

C'est dur comme ça. Utilise la balise [ cpp ].
Et donne l'erreur exacte + la ligne.
Tu vas avoir un problème avec string aussi. Faut utilise des types .Net, à savoir String*.
Ta classe MC++ doit juste encapsuler ta classe native. Elle se contente d'appeler les même fonctions, sauf qu'elle "marshall" = converti les types .Net <-> Natif (dans le cas de std::string par exemple).


 
Voici l'erreur qui s'affcihe :
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\ServProv.h(93) : error C2872: 'IServiceProvider' : symbole ambigu est peut-être 'c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\ServProv.h(48) : System::IServiceProvider IServiceProvider'
 
        ou       'wModuleDBA_DBR.cpp(0) : System::IServiceProvider'
 
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\ServProv.h(100) : fatal error C1903: impossible de récupérer à partir des erreurs précédentes ; arrêt de la compilation

n°1079649
HelloWorld
Salut tout le monde!
Posté le 11-05-2005 à 15:51:03  profilanswer
 

Tu t'en sers où ?
A quoi il sert _data ? Pourquoi tes fonctions sont statiques ?
Essaye de ne rien inclure dans ton .h. Regarde comment fonctionne la technique du pimpl.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°1079704
ronin111
Posté le 11-05-2005 à 16:12:19  profilanswer
 

HelloWorld a écrit :

Tu t'en sers où ?
A quoi il sert _data ? Pourquoi tes fonctions sont statiques ?
Essaye de ne rien inclure dans ton .h. Regarde comment fonctionne la technique du pimpl.


 
Excuse moi , c'est vrai que je ne t'ai de pas sans un petit commentaire de ce que je fais.
 
En faite ,_data sera une instanciation d'une classe de ma bibliothèque C++ natif.
ben des collègues m'ont dit que les méthodes qui vont encapsuler d'autres méthodes de ma bibliothèque C++ natif doivent ê static
Cependant, j'ai tout modifié mais j'ai toujours les memes erreurs
 
my file .h
namespace wModuleDBA_DBR
{
public __gc class wDBA
 {
 private:
  DBAdata *_data;
   
 public :
   wDBA(){
    _data = new DBAdata();  
   }
 
   ~wDBA(){}
   
   static void OpenConnexion(const string& user,  const string& pass, const string& name) ;
   static void CloseConnexion();
 
   
   
   
 };
 
}
 
 
my file .cpp
 
#include "wModuleDBA_DBR.h"
#include <stdio.h>
#include "DBAaccess.h"
#include <exception>
 
 
namespace wModuleDBA_DBR {
 
void wDBA::OpenConnexion(const string& user, const string& pass, const string& name){
 
 
 _data. m_connexion.OpenSession(&user,&pass,&name);
 cout<<"OK OPEN CONNEXION DB"<<endl;
   
}
 
 
void wDBA::CloseConnexion() {
 
 _data->m_connexion.CloseSession();
 cout<<"OK CLOSE CONNEXION DB"<<endl;
 
 
}
 
}
 
 
Et voici les erreurs qui sortent :
 
c:\Documents and Settings\adirieh\Mes documents\AFIS\AFISprojet\wModuleDBA_DBR\wModuleDBA_DBR.h(18) : error C2143: erreur de syntaxe : absence de ';' avant '*'
c:\Documents and Settings\adirieh\Mes documents\AFIS\AFISprojet\wModuleDBA_DBR\wModuleDBA_DBR.h(18) : error C2501: 'wModuleDBA_DBR::wDBA::DBAdata' : Spécificateurs de type ou de classe de stockage manquants
c:\Documents and Settings\adirieh\Mes documents\AFIS\AFISprojet\wModuleDBA_DBR\wModuleDBA_DBR.h(18) : error C2501: 'wModuleDBA_DBR::wDBA::_data' : Spécificateurs de type ou de classe de stockage manquants
c:\Documents and Settings\adirieh\Mes documents\AFIS\AFISprojet\wModuleDBA_DBR\wModuleDBA_DBR.h(27) : error C2143: erreur de syntaxe : absence de ',' avant '&'
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\ServProv.h(48) : warning C4935: spécificateur d'accès à l'assembly modifié à partir de 'public'
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\ServProv.h(93) : error C2872: 'IServiceProvider' : symbole ambigu
        est peut-être 'c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\ServProv.h(48) : System::IServiceProvider IServiceProvider'
        ou       'wModuleDBA_DBR.cpp(0) : System::IServiceProvider'
 
 
 
Merci d'avance de ton aide

n°1079736
HelloWorld
Salut tout le monde!
Posté le 11-05-2005 à 16:23:51  profilanswer
 

HelloWorld a écrit :

C'est dur comme ça. Utilise la balise [ cpp ].



---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  PBM d'inportation d'un DLL C++ dans Visual DOTNET

 

Sujets relatifs
[Visual C++ .NET] Conversion String -> const char *DLL, OLE & fonctions exportées
Connexion à SQL server par Visual C++Projet Visual Basic
[VISUAL STUDIO 2003] structure des répertoires ?DLL MFC en C++ un run time??
savoir si bouton radio coché en visual basiqueopenGL sous visual
Visual C++6 introductory edition[Help] Internationalisation avec Visual Studio .NET
Plus de sujets relatifs à : PBM d'inportation d'un DLL C++ dans Visual DOTNET


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR