begin process at 2010 09 07 19:58:37
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PDA

 > 

Divers

 > 

Général

 > 

Utilisation DLL C# à partir d'une dll C++ (non managé)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Utilisation DLL C# à partir d'une dll C++ (non managé)

lundi 22 février 2010 à 14:39:38 | Utilisation DLL C# à partir d'une dll C++ (non managé)

koktel

Bonjour,

J'ai une machine sous Windows CE 4.2. Sur celle-ci j'ai un script écrit dans un langage propriétaire qui appelle une dll écrite en C++. Cette DLL est écrite en C++ avec EVC++, c'est du code non managé (pas le choix du au langage propriétaire qui ne peut appeler que des DLL non managées). Je souhaiterais à partir de cette DLL appeler une autre DLL, qui elle serait écrite en C# avec Visual Studio 2003 et est donc du code managé. Comment puis-je faire cela si tenté que cela soit possible sous windows CE ?

J'ai trouvé des exemples d'utilisation de DLL managées à partir de code C++ non managé qui fonctionne très bien sous windows XP. Ces exemples utilisent un client COM (la dll en C++) et un server COM (la dll en c# qui est utilisé par le client COM en c++). Problème je n'arrive pas du tout à faire fonctionner le client en C++ sous EVC++ (donc pour windows CE et non plus windows xp)...

Ci-dessous le code du client COM que je souhaiterais pour porter sur ma plateforme Windows CE 4.2:

Code C/C++ :
// COMClient.cpp
// Build with "cl COMClient.cpp"
// arguments: friend

#include <windows.h>
#include <stdio.h>

#pragma warning (disable: 4278)

// To use managed-code servers like the C# server, 
// we have to import the common language runtime:
#import <mscorlib.tlb> raw_interfaces_only

// For simplicity, we ignore the server namespace and use named guids:
#if defined (USINGPROJECTSYSTEM)
#import "..\RegisterCSharpServerAndExportTLB\CSharpServer.tlb" no_namespace named_guids
#else  // Compiling from the command line, all files in the same directory
#import "CSharpServer.tlb" no_namespace named_guids
#endif
int main(int argc, char* argv[])
{
   IManagedInterface *cpi = NULL;
   int retval = 1;

   // Initialize COM and create an instance of the InterfaceImplementation class:
   CoInitialize(NULL);
   HRESULT hr = CoCreateInstance(CLSID_InterfaceImplementation,
               NULL, CLSCTX_INPROC_SERVER,
               IID_IManagedInterface, reinterpret_cast<void**>(&cpi));

   if (FAILED(hr))
   {
      printf("Couldn't create the instance!... 0x%x\n", hr);
   }
   else
   {
      if (argc > 1)
      {
         printf("Calling function.\n");
         fflush(stdout);
         // The variable cpi now holds an interface pointer 
         // to the managed interface.
         // If you are on an OS that uses ASCII characters at the 
         // command prompt, notice that the ASCII characters are 
         // automatically marshaled to Unicode for the C# code.
         if (cpi->PrintHi(argv[1]) == 33)
            retval = 0;
         printf("Returned from function.\n");
      }
      else
         printf ("Usage:  COMClient <name>\n");
      cpi->Release();
      cpi = NULL;
   }

   // Be a good citizen and clean up COM:
   CoUninitialize();
   return retval;
}


Merci


Cette discussion est classée dans : code, windows, dll, com, cpi


Répondre à ce message

Sujets en rapport avec ce message

Fermer des application avec C# sous Windows CE [ par alemugny ] Je sais programmé l'ouverture d'une autre application dans mon programme construit en C#. J'utilise la DLL suivante coredll.dll pour ouvrir mais comme Compatibilité Windows Mobile 2003 et eVB 3.0 [ par bestofts1 ] Salut à tous, et bravo pour votre site il est rare d'en trouver aussi bien fourni sur les pocket PC.Voilà je programme en ce moment en eVb 3.0 et j'ai Transport d'un dll de eVC++ 3.0 en eVC++ 4.0 [ par PSylvie ] Bonjour,Je possède une dll sous eVC++ 3.0 qui fonctionne parfaitement. Cependant, j'ai écrit une application sous eVC++ 4.0. qui a besoin de cette dll programmer un pda sous Windows CE2.11 [ par mikrosys ] Bonjour ,voila j'aimerais realiser un prog sur un compaq 2010C avec windows CE2.11 tout ce que je trouve c'est pour CE3.0. Peut on programmer sous vb EVC++ 3 et Windows XP [ par slapin ] Bonjour,Je me lance dans le developpement pour un symbol PPT2800 sous pocket PC 2002Si j'ai bien compris il faut Embedded Visual Tools 3 avec le SDK P ouvrir un fichier d'aide [ par patoch ] Salut Voila je voudrais ouvrir un fichier d'aide .htm sur PPC,mais voila le code que j'ai mis ne fonctionne pas ou est l'erreur?Je joint mon code si q Pocket PC - Détection de la touche presser - .Net [ par cboulas ] Salut à tous, une petite question je voudrais capter la touche presser dans une WinForm, pour cela j'ai coller le code suivant dans Form_KeyPress, seu Affichage sur Windows Mobile 2003 Deuxième Edition [ par amerge ] Comment faire pour ne plus avoir le message disant que l'application a été faite pour une version précédente de Windows Mobile, et pour pouvoir exploi acceder aux données du pda sous windows [ par rien ] comment accéder aux données du palm sous windows ???grace a j2me ?? si oui  comment??? MerciPS : si vous avez besoin de précision, dites le moi PB syncro pocket Access [ par remi4150 ] Bonjour,Je ne suis pas développeur mais je solicite votre aide.J'ai expliqué mon cas sur :http://forum.sorobangeeks.com/viewtopic.php?t=12018mais je n


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Septembre 2010
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
27282930   

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,265 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales