Fonction _T(); [Résolu]

cs_d4M13N 27 Messages postés dimanche 19 août 2007Date d'inscription 13 juillet 2009 Dernière intervention - 8 mars 2009 à 13:41 - Dernière réponse : cs_d4M13N 27 Messages postés dimanche 19 août 2007Date d'inscription 13 juillet 2009 Dernière intervention
- 9 mars 2009 à 00:04
Bonjour,

Je suis en train de faire un petit programme en C++ Application Windows Form sous Microsoft Visual Studio 2005.
Je suis bloqué sur une malheureuse chaîne de caractères, j'utilise la fonction ShellExecute qui admet comme paramètre "explore"
mais si je l'utilise tel quelle : ShellExecute(NULL, "explore", "C:\", NULL, NULL, SW_SHOWNORMAL); le compilateur me jette,
c'est pourquoi j'utilise la fonction _T() ce qui donne : ShellExecute(NULL, _T("explore"), _T("C:\"), NULL, NULL, SW_SHOWNORMAL);.
Mais je ne comprend pas pourquoi dans un programme en Console cela fonctionne contrairement à une application de type fenêtre avec laquelle j'obtiens des erreurs très étranges comme :

Erreur    2    error LNK2001: symbole externe non résolu "extern "C" struct HINSTANCE__ * __stdcall ShellExecuteA(struct HWND__ *,char const *,char const *,char const *,char const *,int)" (?ShellExecuteA@@$$J224YGPAUHINSTANCE__@@PAUHWND__@@PBD111H@Z)    Test.obj

Si quelqu'un comprend cela merci de bien  vouloir m'aider !!
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 8 mars 2009 à 23:02
3
Merci
Les mystères de l'interprété....

Essaie de mettre:
#include <shellapi.h>
et de linker avec shell32.lib

ciao...
BruNews, MVP VC++

Merci BruNews 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 69 internautes ce mois-ci

Commenter la réponse de BruNews
deck_bsd 1244 Messages postés jeudi 31 mars 2005Date d'inscription 3 août 2016 Dernière intervention - 8 mars 2009 à 14:22
0
Merci
Yop,

montre nous le code ou tu l'utilises, perso je n'ai jamais eu d'erreur de link avec cette API, as-tu bien inclu ce qu'il fallait ? et aussi si c'est avec une application fenêtre pourquoi laisses-tu le handle à NULL ?

++
deck_bsd
___________________________________
[http://deck-bsd.eurower.net]
Commenter la réponse de deck_bsd
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 8 mars 2009 à 22:02
0
Merci
Surement que tu compiles en UNICODE.

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
cs_d4M13N 27 Messages postés dimanche 19 août 2007Date d'inscription 13 juillet 2009 Dernière intervention - 8 mars 2009 à 22:45
0
Merci
Merci de vos réponses !
Le code ça donne ça :

private: System::Void explorerBaseToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e)
        {
            HWND hd;
            ShellExecute(hd, _T("explore"), _T("C:\"), NULL, NULL, SW_SHOWNORMAL);
        }

Avec ou sans la variable hd ça ne change rien, j'ai inclue : #include <stdio.h>
                                                                                       #include <stdlib.h>
                                                                                       #include <tchar.h>
                                                                                       #include <windows.h>
                                                                                       #include <shellapi.h>

Et le unicode où Multioctets ne change rien. Peut-être faut il que j'installe Visual Studio 2008 plutôt ?
Commenter la réponse de cs_d4M13N
cs_d4M13N 27 Messages postés dimanche 19 août 2007Date d'inscription 13 juillet 2009 Dernière intervention - 8 mars 2009 à 23:37
0
Merci
pourrais-tu m'expliquer comment linker shell32.lib? stp
Commenter la réponse de cs_d4M13N
cs_d4M13N 27 Messages postés dimanche 19 août 2007Date d'inscription 13 juillet 2009 Dernière intervention - 9 mars 2009 à 00:04
0
Merci
Merci beaucoup j'ai inclue shell32.lib dans le fichier qui contient le main.

Ce qui donne :
#pragma comment(lib, "shell32.lib");

Et ça fonctionne parfaitement maintenant !!
Commenter la réponse de cs_d4M13N

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.