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

Bibliothèques Discussion :

MVS2019 - Erreur LNK2001 MSVCRT


Sujet :

Bibliothèques

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    juillet 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2017
    Messages : 14
    Points : 10
    Points
    10
    Par défaut MVS2019 - Erreur LNK2001 MSVCRT
    Bonjour à tous,

    je suis attristé d'être le dernier à avoir demandé de l'aide et me sent un peu nul, mais je vous souhaite à tous mes meilleurs voeux, quand même!

    Soit, venons en au fait.

    J'ai voulu travailler autours d'un programme fenêtré, jusque là tout va bien, et créer une classe pour se faire, un peu dans le style de Qt, pour avoir un main quasi vide, et une classe CTRLWindows qui est un peu l'équivalent de MainWindows chez Qt. (l'intérêt est de pouvoir exporter la classe plus aisément dans de futurs projets)

    Cependant, j'ai constaté, en debug, que lorsque je fermais la fenêtre, le programme ne s'arrêtais pas, je devais en plus cliquer sur le carré rouge du mode debug pour réellement stopper le programme. Cela se confirme logiquement en exécutant celui ci via l'exe, dans le gestionnaire des tâches, le programme lancé ne s’interrompt pas automatiquement, peut être est-ce là l'origine du problème.

    Lorsque je passe en Release, j'ai une erreur LNK2001 sur le fichier "MSVCRT.lib"(exe_main.obj)

    J'ai également eu une erreur C28251, qui semble s'être corrigée avec l'ajout des "_In_" et "In_opt_" dans le main.

    Voici le main en question:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    int WinMain(_In_ HINSTANCE hInst, _In_opt_ HINSTANCE hPrevInst, _In_ LPSTR lpCmdLine, _In_ int nShowCmd)
    {
    	WNDCLASSEX Window;
    	CTRLWindows CTRLWindows(hInst, hPrevInst, lpCmdLine, nShowCmd, &Window);
     
    }
    Et en effet, je ne retourne rien en sortie de main, et quand j'ajoute un return 0, ça ne change rien. Et pour le coup, j'ai pas trop d'idées en tête!

    Je vous remercie,

    Bonne journée!

    EDIT:

    J'ai compris une partie du problème, lorsque je lance le programme, il passe automatiquement par W_DESTROY (0x0002) alors que la valeur de message est 0x0111 (eq. WM_INITIADLOG) dans la callback de gestion des évent fenêtre!

    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
     
    LRESULT CALLBACK CTRLWindows::MainWindowsProcess(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam, CTRLWindows* Object) {
     
    	static  INITCOMMONCONTROLSEX iccx;
    	LPNMHDR pnmhdr = (LPNMHDR)lParam;
    	switch (message)
    	{
    		case WM_CREATE:
     
    			break;
    		case WM_NOTIFY: // Change of tab -- detect clics and switch tab
     
    			break;
    		case WM_COMMAND: //Detect clics on button
    			switch LOWORD(wParam) {
    // différentes commandes
    			}
    		case WM_DESTROY:
     
    			break;
    		}
     
    	return DefWindowProc(hwnd, message, wParam, lParam);
    }

  2. #2
    Membre éclairé
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    septembre 2015
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : septembre 2015
    Messages : 143
    Points : 657
    Points
    657
    Par défaut
    Citation Envoyé par LegendOfYoda Voir le message
    J'ai compris une partie du problème, lorsque je lance le programme, il passe automatiquement par W_DESTROY (0x0002) alors que la valeur de message est 0x0111 (eq. WM_INITIADLOG) dans la callback de gestion des évent fenêtre!
    dans un premier temps, regarde la doc du switch

    si à la fin de chaque WM_xxxx, tu ne mets pas de break il passe au WM_xxxx suivant et l'exécute

    dans ton cas, à chaque exécution de WM_COMMAND, il exécute aussi WM_DESTROY

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    juillet 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2017
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par Xelland Voir le message
    dans un premier temps, regarde la doc du switch

    si à la fin de chaque WM_xxxx, tu ne mets pas de break il passe au WM_xxxx suivant et l'exécute

    dans ton cas, à chaque exécution de WM_COMMAND, il exécute aussi WM_DESTROY
    Bonjour Xelland,

    en effet, j'avais cherché le break qui manquait, et n'avais pas vu qu'ayant emboité un case dans un autre, j'ai confondu les break!

    Voilà une partie du problème qui se résout! Je t'en remercie!

    Cependant, j'ai toujours cette erreur de LNK dont je ne vois pas la provenance, et qui visiblement, n'était pas lié

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    juillet 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2017
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Pour finaliser cette discussion, en fait c'était assez simple!

    J'ai repris le travail de quelqu'un d'autre qui travaillait en invité de commande.

    J'ai passé son programme en fenêtré, et lorsque j'ai fais ça, j'ai changé dans les propriétés editeur de lien->système->sous système de console à windows, sauf que je ne l'avais fais qu'en debug. Donc en passant en release, il fallait refaire cette simple manipulation!

    Alors à l'instant précis j'ai une sorte d'impression d'avoir l'air bête, mais je me satisfais d'avoir trouvé la solution!

    Bonne journée à tous, puissent les cacahuètes accompagner votre prochain apéro!

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

Discussions similaires

  1. Erreur LNK2001 inexplicable
    Par magicpm7 dans le forum Visual C++
    Réponses: 6
    Dernier message: 04/05/2007, 10h27
  2. [Debutant] Erreur LNK2001 sous Visual.Net.
    Par Carosmagor dans le forum Visual C++
    Réponses: 9
    Dernier message: 11/05/2006, 08h36
  3. erreur LNK2001
    Par aminevr dans le forum MFC
    Réponses: 5
    Dernier message: 23/06/2005, 10h43
  4. debutant: erreur LNK2001 avec la librairie GSL
    Par drill3 dans le forum MFC
    Réponses: 6
    Dernier message: 25/04/2005, 14h58
  5. Réponses: 9
    Dernier message: 27/04/2004, 12h01

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