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 :

Chargement dynamique dll en c++/cli sans dllImport


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 32
    Par défaut Chargement dynamique dll en c++/cli sans dllImport
    Bonjour à tous,

    J'aimerais charger des dll dynamiquement mais sans utiliser dllImport car je ne connais pas le nom de ma dll avant l'exécution du programme. Les séquences d'exécutions déterminent la dll à charger. Par contre les dll que je charge contiennent toutes une fonction exportée avec le même nom et le même canevas.

    J'ai trouvé des infos sur LoadLibrary mais si j'ai bien compris, je passe en unmanaged si j'utilise cette fonction.
    Malheureusement, je dois utiliser VC++ Express et j'ai cru comprendre que LoadLibrary est contenu dans les MFC (non géré par VC++ Express).

    Question subsidiaire : je dois programmer moi-même les dll, peut-on écrire des dll en C++/CLI ?

    Merci pour votre aide, je débarque un peu en C++/CLI

  2. #2
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Citation Envoyé par Plio Voir le message
    J'ai trouvé des infos sur LoadLibrary mais si j'ai bien compris, je passe en unmanaged si j'utilise cette fonction.
    LoadLibraey est une fonction unmanaged, pour charger des bibliothèques unmaneged
    Citation Envoyé par Plio Voir le message
    Malheureusement, je dois utiliser VC++ Express et j'ai cru comprendre que LoadLibrary est contenu dans les MFC (non géré par VC++ Express).
    Pas du tout, c'est une fonction win32 de base. Il te faudra peut-être adjoindre le platform sdk pour y avoir accès.
    Citation Envoyé par Plio Voir le message
    Question subsidiaire : je dois programmer moi-même les dll, peut-on écrire des dll en C++/CLI ?
    En C++/CLI, tu peut générer des DLL managées (qui portent aussi le nom d'assembly en .NET), utilisables uniquement par du code managé (pas par LoadLibrary). La classe Assembly permet de charger dynamiquement ce genre de DLL.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 32
    Par défaut
    J'ai déjà la plateforme SDK installée.
    Dois-je ajouter un include pour trouver la fonction LoadLibrary ?

    J'ai trouvé une déclaration de LoadLibrary dans winBase.h mais si je le mets en include j'obtiens une tripotée d'erreurs (du genre symbole non défini comme ULONG_PTR par exemple, ou WINAPI : identificateur non décalré).
    Dois-je modifié la configuration de mon projet ? (actuel \clr).

    Je vais aussi essayer les assembly, ça me simplifiera la vie par après.

    Merci pour ton aide.

  4. #4
    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
    Declaré dans Winbase.h; inclure Windows.h.
    Lier avec la lib. Kernel32.lib.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 32
    Par défaut
    Merci ça marche avec Windows.h

    Par contre je ne comprends pas bien une chose. J'ai dû modifier une des propriétés de mon projet pour que cela fonctionne :

    => Propriétés Projet\Configuration\Général\Jeu de caractères
    paramètre de base : "Utiliser le jeu de cartères unicode"
    Pour que ça marche : "Non défini" ou "Utiliser le jeu de carctères multioctets"

    Ca m'est déjà arrivé dans un autre projet et j'aimerais comprendre ce que cela engendre. Il n'est jamais agréable de faire des choses sans comprendre pourquoi.
    Si qqun peut m'éclairer...

  6. #6
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Par défaut ton project est configuré pour utiliser de l'UNICODE. Ca a un impact sur la signature de certaines fonctions. Fait une recherche sur le forum Dev. Windows au sujet de UNICODE, ANSI et de la macro TEXT.

    Cela dit, GetProcAddress est une des rares exceptions a la regle, vu que les noms de fonctions sont exportées en ANSI seulement.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 32
    Par défaut
    Je comprends mieux le concept unicode et ansi, mais pourquoi dois-je systématiquement modifier les propriétés de mes projets lorsque je fais appel à Windows.h par exemple ?

  8. #8
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 32
    Par défaut
    Pour faire un test, j'ai juste créer un projet cli de base avec une fenêtre sans ne rien ajouté de plus.
    Dès que je mets include Windows.h, je suis obligé de modifier le jeu de caractères.
    Donc, la simple référence à Windows.h implique que mon code ne peut plus être compilé en unicode, c'est bien ça ?

  10. #10
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 636
    Par défaut
    Citation Envoyé par Plio Voir le message
    Pour faire un test, j'ai juste créer un projet cli de base avec une fenêtre sans ne rien ajouté de plus.
    Dès que je mets include Windows.h, je suis obligé de modifier le jeu de caractères.
    Donc, la simple référence à Windows.h implique que mon code ne peut plus être compilé en unicode, c'est bien ça ?
    Oui... ou du moins, il faut le croire
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  11. #11
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Plio Voir le message
    Pour faire un test, j'ai juste créer un projet cli de base avec une fenêtre sans ne rien ajouté de plus.
    Dès que je mets include Windows.h, je suis obligé de modifier le jeu de caractères.
    Donc, la simple référence à Windows.h implique que mon code ne peut plus être compilé en unicode, c'est bien ça ?
    C'est pas tout a fait ca....

    Le SDK de Windows fourni(ssai)t les fonctions prenant des chaînes de caractères (et à plus forte raison les chemins d'accès de fichier comme les DLL) sous deux versions: A et W.
    A pour ANSI (multi-byte)
    W pour Wide (UNICODE).

    Si on prend l'exemple "LoadLibrary", on aura donc deux fonctions: LoadLibraryA(LPCSTR) et LoadLibraryW(LPCWSTR).
    Selon les settings de ton projet, "LoadLibrary" sera un define qui pointera sur LoadLibraryA *ou* LoadLibraryW.

    Je serai très etonné que ton projet ne compile pas en Unicode vu que toutes les fonctions 'ansi' sont plus ou moins dépréciées (et font une conversion ansi->unicode pour appeler la version unicode).

    Si tu nous disais les erreurs que tu as en Unicode ?

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 32
    Par défaut
    Désolé pour la réponse tardive, mais je voulais être sûr de ce que je racontais.
    J'ai donc refait le test avec la version express de VC++ et avec la version complète.
    Citation Envoyé par nicroman Voir le message
    Je serai très etonné que ton projet ne compile pas en Unicode vu que toutes les fonctions 'ansi' sont plus ou moins dépréciées (et font une conversion ansi->unicode pour appeler la version unicode).?
    Je vais expliquer la procédure que j'ai réalisé avec VC++ Express 2005 :
    Fichier=>Nouveau=>Projet
    Type de projet : CLR\Application Windows Forms
    Ajouter #include "Windows.h" après #pragma once dans Form1.h
    Compilation
    Erreurs

    La même procédure réalisée sous la version complète de Visual C++ 2005 compile très bien


    Citation Envoyé par nicroman Voir le message
    Si tu nous disais les erreurs que tu as en Unicode ?
    Voici la tripotée d'erreurs dont je parlais :
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winbase.h(4295) : error C2061: erreur de syntaxe*: identificateur 'LPTSTR'
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winbase.h(4309) : error C2065: 'lpBuffer'*: identificateur non déclaré
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winbase.h(4310) : error C2065: 'nSize'*: identificateur non déclaré
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winbase.h(4312) : error C2065: 'Arguments'*: identificateur non déclaré
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winbase.h(5854) : error C2065: 'LPCTSTR'*: identificateur non déclaré
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winbase.h(5854) : error C2146: erreur de syntaxe*: absence de ')' avant l'identificateur 'lpName'
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winbase.h(5854) : error C2433: 'SetEnvironmentVariable'*: 'inline' non autorisé sur les déclarations de données
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winbase.h(5856) : error C2059: erreur de syntaxe*: ')'
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winbase.h(5857) : error C2143: erreur de syntaxe*: absence de ';' avant '{'
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winbase.h(5857) : error C2447: '{'*: en-tête de fonction manquant (liste formelle à l'ancien format*?)
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winbase.h(6723) : error C2146: erreur de syntaxe*: absence de ')' avant l'identificateur 'lpPathName'
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winbase.h(6723) : error C2433: 'GetTempFileName'*: 'inline' non autorisé sur les déclarations de données
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winbase.h(6727) : error C2059: erreur de syntaxe*: ')'
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winbase.h(6728) : error C2143: erreur de syntaxe*: absence de ';' avant '{'
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winbase.h(6728) : error C2447: '{'*: en-tête de fonction manquant (liste formelle à l'ancien format*?)
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winbase.h(6882) : error C2146: erreur de syntaxe*: absence de ')' avant l'identificateur 'lpPathName'
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winbase.h(6882) : error C2433: 'SetCurrentDirectory'*: 'inline' non autorisé sur les déclarations de données
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winbase.h(6882) : error C2059: erreur de syntaxe*: ')'
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winbase.h(6883) : error C2143: erreur de syntaxe*: absence de ';' avant '{'
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winbase.h(6883) : error C2447: '{'*: en-tête de fonction manquant (liste formelle à l'ancien format*?)
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winbase.h(7031) : error C2146: erreur de syntaxe*: absence de ')' avant l'identificateur 'lpPathName'
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winbase.h(7031) : error C2433: 'CreateDirectory'*: 'inline' non autorisé sur les déclarations de données
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winbase.h(7033) : error C2059: erreur de syntaxe*: ')'
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winbase.h(7034) : error C2143: erreur de syntaxe*: absence de ';' avant '{'
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winbase.h(7034) : error C2447: '{'*: en-tête de fonction manquant (liste formelle à l'ancien format*?)
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winbase.h(7318) : error C2146: erreur de syntaxe*: absence de ')' avant l'identificateur 'lpFileName'
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winbase.h(7318) : error C2433: 'DeleteFile'*: 'inline' non autorisé sur les déclarations de données
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winbase.h(7318) : error C2059: erreur de syntaxe*: ')'
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winbase.h(7319) : error C2143: erreur de syntaxe*: absence de ';' avant '{'
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winbase.h(7319) : error C2447: '{'*: en-tête de fonction manquant (liste formelle à l'ancien format*?)
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winbase.h(7505) : error C2146: erreur de syntaxe*: absence de ')' avant l'identificateur 'lpExistingFileName'
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winbase.h(7505) : error C2433: 'CopyFile'*: 'inline' non autorisé sur les déclarations de données
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winbase.h(7508) : error C2059: erreur de syntaxe*: ')'
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winbase.h(7509) : error C2143: erreur de syntaxe*: absence de ';' avant '{'
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winbase.h(7509) : error C2447: '{'*: en-tête de fonction manquant (liste formelle à l'ancien format*?)
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winbase.h(7591) : error C2146: erreur de syntaxe*: absence de ')' avant l'identificateur 'lpExistingFileName'
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winbase.h(7591) : error C2433: 'MoveFile'*: 'inline' non autorisé sur les déclarations de données
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winbase.h(7593) : error C2059: erreur de syntaxe*: ')'
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winbase.h(7594) : error C2143: erreur de syntaxe*: absence de ';' avant '{'
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winbase.h(7594) : error C2447: '{'*: en-tête de fonction manquant (liste formelle à l'ancien format*?)
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winuser.h(6336) : error C2061: erreur de syntaxe*: identificateur 'LPCTSTR'
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winuser.h(6348) : error C2065: 'lpchText'*: identificateur non déclaré
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winuser.h(6349) : error C2065: 'cchText'*: identificateur non déclaré
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winuser.h(6350) : error C2065: 'lprc'*: identificateur non déclaré
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winuser.h(6352) : error C2065: 'format'*: identificateur non déclaré
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winuser.h(7207) : error C2061: erreur de syntaxe*: identificateur 'LPCTSTR'
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winuser.h(7218) : error C2065: 'lpText'*: identificateur non déclaré
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winuser.h(7219) : error C2065: 'lpCaption'*: identificateur non déclaré
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winuser.h(7221) : error C2065: 'uType'*: identificateur non déclaré
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winuser.h(8042) : error C2061: erreur de syntaxe*: identificateur 'LPTSTR'
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winuser.h(8052) : error C2065: 'lpClassName'*: identificateur non déclaré
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winuser.h(8054) : error C2065: 'nMaxCount'*: identificateur non déclaré
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winnls.h(1089) : error C2061: erreur de syntaxe*: identificateur 'LPCTSTR'
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winnls.h(1102) : error C2065: 'lpString1'*: identificateur non déclaré
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winnls.h(1103) : error C2065: 'cchCount1'*: identificateur non déclaré
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winnls.h(1104) : error C2065: 'lpString2'*: identificateur non déclaré
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\winnls.h(1106) : error C2065: 'cchCount2'*: identificateur non déclaré
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\urlmon.h(3087) : error C2061: erreur de syntaxe*: identificateur 'LPTSTR'
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\commdlg.h(931) : error C2061: erreur de syntaxe*: identificateur 'LPTSTR'
    C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\commdlg.h(932) : error C2061: erreur de syntaxe*: identificateur 'LPTSTR'

  13. #13
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Chez moi, VC++ Express, ca passe. J'aurais dit que ca vient de ton PSDK, mais j'ai le meme... Par contre, il me semble que j'ai installé le service pack 1 de VC++ Express.
    Au passage je découvre de droles de trucs dans le PSDK, ce qui pose probleme chez toi:
    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
    #ifdef UNICODE
    #define SetEnvironmentVariable  SetEnvironmentVariableW
    #else
    #define SetEnvironmentVariable  SetEnvironmentVariableA
    #endif // !UNICODE
     
    #if defined(_M_CEE)
    #undef SetEnvironmentVariable
    __inline
    BOOL
    SetEnvironmentVariable(
        LPCTSTR lpName,
        LPCTSTR lpValue
        )
    {
    #ifdef UNICODE
        return SetEnvironmentVariableW(
    #else    
        return SetEnvironmentVariableA(
    #endif
            lpName,
    	lpValue
    	);
    }
    #endif	/* _M_CEE */
    c'est pour résoudre un conflit avec System::Environment::SetEnvironmentVariable je suppose.

    Enfin, note qu'on préfere placer windows.h dans le PCH, i.e le fichier stdafx.h.

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 32
    Par défaut
    Je vérifierai ce soir la version de VC++ Express installée chez moi.

    Pour ce qui est de l'include Windows.h, c'étais juste pour faire un essai que je l'ai mis là. Mais j'essaierai tout de même de le mettre dans le fichier PCH.

    Merci pour ton aide.

    J'ai vérifié mon VC Express, j'ai bien installé le SP1.
    J'ai également fait appel à Windows.h dans le fichier PCH.

    Rien ne marche. Je suis toujours obligé de modifier la propriété de mon projet pour passer en multi octet au lieu de Unicode.

    Je suis tout de même incertain d'une chose pour le PSDK.
    Sur le site http://arb.developpez.com/vc++/expre...e=installation on demande de changer les chemins de recherche avec C:\Program Files\Microsoft Plateform SDK\...
    Mais le seul répertoire que j'ai après avoir installé le PSDK est Microsoft Platform SDK for Windows Server 2003 R2\...

    Ai-je installé le mauvais PSDK ?

  15. #15
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Chez moi c'est "C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include" ...

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 32
    Par défaut
    Salut,

    Visiblement j'ai le bon PSDK.
    Je ne vais pas m'énerver plus longtemps, je vais me contenter d'utiliser la version complète de VC++ et je tiendrai compte du problème si je dois recomplier avec la version express.

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 32
    Par défaut
    N'ayant rien trouvé de plus avec VC++ Express, je classe cette discussion comme résolue car la question de base est bel et bien résolue.

    Pour mon problème de compilation, je vais tenter une question sur MSDN. On ne sait jamais...

    Merci à tous ceux qui ont pris le temps de me répondre.

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

Discussions similaires

  1. [Dll] Chargement dynamique a base d'index
    Par Clorish dans le forum Langage
    Réponses: 20
    Dernier message: 25/03/2005, 14h19
  2. [MFC VC.NET] Chargement dynamique de DLL
    Par vanitom dans le forum MFC
    Réponses: 3
    Dernier message: 26/01/2005, 13h56
  3. Problème mémoire avec une dll par chargement dynamique
    Par widze19 dans le forum C++Builder
    Réponses: 6
    Dernier message: 15/12/2003, 13h20
  4. Dll a chargement dynamique
    Par delire8 dans le forum C++Builder
    Réponses: 7
    Dernier message: 05/06/2003, 22h47
  5. Chargement dynamique de DLL sous Unix
    Par Willou dans le forum Autres éditeurs
    Réponses: 7
    Dernier message: 18/12/2002, 18h25

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