IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

DLL partagé entre deux programme


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2008
    Messages : 111
    Par défaut DLL partagé entre deux programme
    Bonjour à tous,


    Je souhaite crée une DLL partagé entre un programme en C++ et un programme windev. Bon but étant d'utiliser la DLL pour faire passer des valeurs de variable à travers celle-ci. J'ai créé un OpenFileMapping dans mon C++ et un CreateFileMapping dans ma DLL. Pour mettre à jour ma variable depuis Windev j'utilise un export de fonction.
    Mon idée serait d'accéder à la DLL qui est présent dans le dossier dans mon projet Windev depuis mon programme c++. Mais je ne sais pas trop comment faire.
    J'espère avoir été clair.

    Merci, d'avance

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Par défaut, l'ordre de recherche pour une DLL est le suivant :

    - La mémoire si la DLL est déjà en cours d'utilisation.
    - Le répertoire de travail de l'application.
    - Le répertoire d'installation de Windows.
    - Le sous-répertoire SYSTEM du répertoire contenant Windows.
    - Le répertoire de l'exécutable.
    - Les répertoires du PATH.

    Copie ta DLL dans le PATH ou dans SYSTEM
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre chevronné Avatar de themadmax
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Par défaut
    Je pense plutot qu'il veut parler de memoire partagé.
    Veut-tu partager des variables/instance d'objets entre tes 2 programmes ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2008
    Messages : 111
    Par défaut
    Bonjour à tous,

    Oui c'est ça je veux partager des variables entre mes programmes. C'est pour ça que j'ai créé un espace mémoire: CreateFileMapping() dans ma DLL.
    J'utilise cette espace mémoire dans mon application C++ qui me sert à créer un service sous windows. J'utilise également cette DLL dans un programme windev.
    Donc je voulais savoir comment faire pour que ma DLL soit la même.

    Merci d'avance.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2008
    Messages : 111
    Par défaut
    J'ai précisé& dans mon code Windev le chemin de la DLL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resultat=AppelDLL32("P:\Projets C\rad studio\SNMP\SERVICE_AgentSnmp\Debug\FonctionSNMP.dll","getMib","1.3.6.1.4.1.5.3.0")
    Mais je n'arrive pas à récupérer dans mon code la valeur passer en paramètre.
    En gros je passe un valeur dans une fonction de la DLL appeler sous Windev qui doit être récupérer dans un code c++.

    Voici ce que je fait pour récupérer la valeur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    HANDLE FileMapping;
    	LPVOID memory = NULL; // pointer to shared memory
     
    	FileMapping=OpenFileMapping(FILE_MAP_READ, //Access Mode: read
    					true,
    					TEXT("dllmemfilemap")); // name of map object
     
    	// Get a pointer to the file-mapped shared memory
    	 memory = MapViewOfFile(
    				FileMapping,     // object to map view of
    				FILE_MAP_WRITE, // read/write access
    				0,              // high offset:  map from
    				0,              // low offset:   beginning
    				0);             // default: map entire file
     
     
    	 if (memory == NULL)
    	 {
    		numberAgent = 999;
    	 }
             else
             {
                    numberAgent = (unsigned int) memory;
             }
     
    	return numberAgent;
    Memory est NULL.
    J'espère avoir été clair et que je ne fais pas n'importe quoi

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2008
    Messages : 111
    Par défaut
    J'ai fait un getLastError() et il me dit que l'accès à la zone mémoire est refusé.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. communication entre deux programmes
    Par Invité dans le forum C
    Réponses: 19
    Dernier message: 12/10/2008, 12h07
  2. Interférence entre deux programmes
    Par eyquem dans le forum Général Python
    Réponses: 1
    Dernier message: 01/06/2008, 15h10
  3. Débutant, Communication entre deux programmes
    Par Madalen dans le forum Langage
    Réponses: 5
    Dernier message: 23/05/2007, 22h27
  4. [TP] Echanger des données entre deux programmes
    Par ILIAS Raphaël dans le forum Turbo Pascal
    Réponses: 3
    Dernier message: 22/03/2005, 09h31
  5. TList partagée entre deux process.
    Par swirtel dans le forum C++Builder
    Réponses: 2
    Dernier message: 10/01/2005, 11h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo