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++/CLI Discussion :

[Winforms] Erreur de compilation LNK1561


Sujet :

C++/CLI

  1. #1
    Membre régulier
    Homme Profil pro
    Etude technique THT
    Inscrit en
    Juillet 2012
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Etude technique THT
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juillet 2012
    Messages : 84
    Points : 111
    Points
    111
    Par défaut [Winforms] Erreur de compilation LNK1561
    Bonjour,
    J'évolue sous visual studio community 2015 en c++.
    Je souhaiterais créer une application Windows Form c++.

    J'effectue un test très simple :

    1) Fichier --> Nouveau --> Projet --> Visual c++ --> c++ Windows form

    2) J'exécute le mode Débogueur en mode local en debug.
    Tous fonctionnent parfaitement bien. La fenêtre Windows Form s'affiche.

    Mais en mode realise Générer la solution l'erreur suivante s'affiche :
    LNK1561 le point d'entrée doit être défini.

    Pourtant si j'ai bien compris les tutos c'est la procédure main le point d'entrée dans le fichier cpp.

    Fichier MyForm.cpp :

    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
     
    #include "MyForm.h"
     
     
    using namespace System;
    using namespace System::Windows::Forms;
     
     
    [STAThread]
    void Main(array<String^>^ args)
    {
    	Application::EnableVisualStyles();
    	Application::SetCompatibleTextRenderingDefault(false);
     
    	AWinForm2::MyForm form;
    	Application::Run(%form);
     
     
     
     
    }
    Fichier MyForm.h :
    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
    62
    63
    64
    65
    66
    67
    68
    69
     
    #pragma once
     
    namespace CppWinForm1 {
     
    	using namespace System;
    	using namespace System::ComponentModel;
    	using namespace System::Collections;
    	using namespace System::Windows::Forms;
    	using namespace System::Data;
    	using namespace System::Drawing;
     
    	/// <summary>
    	/// Summary for MyForm
    	/// </summary>
    	public ref class MyForm : public System::Windows::Forms::Form
    	{
    	public:
    		MyForm(void)
    		{
    			InitializeComponent();
    			//
    			//TODO: Add the constructor code here
    			//
    		}
     
    	protected:
    		/// <summary>
    		/// Clean up any resources being used.
    		/// </summary>
    		~MyForm()
    		{
    			if (components)
    			{
    				delete components;
    			}
    		}
     
    	private:
    		/// <summary>
    		/// Required designer variable.
    		/// </summary>
    		System::ComponentModel::Container ^components;
     
    #pragma region Windows Form Designer generated code
    		/// <summary>
    		/// Required method for Designer support - do not modify
    		/// the contents of this method with the code editor.
    		/// </summary>
    		void InitializeComponent(void)
    		{
    			this->SuspendLayout();
    			// 
    			// MyForm
    			// 
    			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
    			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
    			this->ClientSize = System::Drawing::Size(284, 261);
    			this->Name = L"MyForm";
    			this->Text = L"MyForm";
    			this->Load += gcnew System::EventHandler(this, &MyForm::MyForm_Load);
    			this->ResumeLayout(false);
     
    		}
    #pragma endregion
    	private: System::Void MyForm_Load(System::Object^  sender, System::EventArgs^  e) {
    	}
    	};
    }
    Ces 2 fichiers ont été crées automatiquement lors de la création du projet.

    Via Google je ne trouve pas la solution.
    Si quelqu'un a des tutos sur Windows Form et explication sur le point d'entrée cela me rendrais bien service (en Français si possible).
    En attente d'une réponse, cordialement.

  2. #2
    Membre régulier
    Homme Profil pro
    Etude technique THT
    Inscrit en
    Juillet 2012
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Etude technique THT
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juillet 2012
    Messages : 84
    Points : 111
    Points
    111
    Par défaut RE
    ultrabody a trouvé une réponse voir ce lien http://www.developpez.net/forums/d13...t-cpp-form-vs/

    J'ai mis dans le fichier MyForm.ccp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #include "MyForm.h" //the header name for your form
     
    using namespace Projet1; //the project name in your header file
     
    [STAThreadAttribute]
    int main(array<System::String ^> ^args)
    {
    	Application::EnableVisualStyles();
    	Application::SetCompatibleTextRenderingDefault(false);
     
    	Application::Run(gcnew MyForm());
    	return 0;
    }
    Fichier MyForm.h :
    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    #pragma once
     
    namespace Projet1 {
     
    	using namespace System;
    	using namespace System::ComponentModel;
    	using namespace System::Collections;
    	using namespace System::Windows::Forms;
    	using namespace System::Data;
    	using namespace System::Drawing;
     
    	/// <summary>
    	/// Description résumée de MyForm
    	/// </summary>
    	public ref class MyForm : public System::Windows::Forms::Form
    	{
    	public:
    		MyForm(void)
    		{
    			InitializeComponent();
    			//
    			//TODO: ajoutez ici le code du constructeur
    			//
    		}
     
    	protected:
    		/// <summary>
    		/// Nettoyage des ressources utilisées.
    		/// </summary>
    		~MyForm()
    		{
    			if (components)
    			{
    				delete components;
    			}
    		}
     
    	private:
    		/// <summary>
    		/// Variable nécessaire au concepteur.
    		/// </summary>
    		System::ComponentModel::Container ^components;
     
    #pragma region Windows Form Designer generated code
    		/// <summary>
    		/// Méthode requise pour la prise en charge du concepteur - ne modifiez pas
    		/// le contenu de cette méthode avec l'éditeur de code.
    		/// </summary>
    		void InitializeComponent(void)
    		{
    			this->SuspendLayout();
    			// 
    			// MyForm
    			// 
    			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
    			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
    			this->ClientSize = System::Drawing::Size(284, 261);
    			this->Name = L"MyForm";
    			this->StartPosition = System::Windows::Forms::FormStartPosition::CenterScreen;
    			this->Text = L"MyForm";
    			this->Load += gcnew System::EventHandler(this, &MyForm::MyForm_Load);
    			this->ResumeLayout(false);
     
    		}
    #pragma endregion
    	private: System::Void MyForm_Load(System::Object^  sender, System::EventArgs^  e) {
    	}
    	};
    }
    En mode realise cela fonctionne bien mais cela m'affiche une fenêtre dos indésirable, alors que je ne veux que le fenêtre Form.
    Si quelqu'un a une idée je suis preneur.
    Cordialement.

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 059
    Points : 12 095
    Points
    12 095
    Par défaut
    Vérifiez dans les options de compilation les propriétés en charge de spécifier le point d'entré.

  4. #4
    Membre régulier
    Homme Profil pro
    Etude technique THT
    Inscrit en
    Juillet 2012
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Etude technique THT
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juillet 2012
    Messages : 84
    Points : 111
    Points
    111
    Par défaut RE
    Bonjour,
    Merci bacelar pour votre réponse.
    Je réponds tardivement car je travaille en horaire décalé.

    Pour définir le point d'entrée j'ai procédé de la manière suivante :

    Projet --> propriété du projet --> Éditeur de liens --> Avancé --> Point d'entrée

    Nom : Définir point d'entrée.JPG
Affichages : 1678
Taille : 107,1 Ko

    Mais je ne sais pas ce qu'il faut mettre au point d'entrée.
    J'ai essayé d'indiquer le fichier .cpp mais cela ne fonctionne pas.

    Pourriez-vous m'indiquer la démarche à suivre svp ?

    Voici ce qui ce produit lorsque je ne modifie rien, j'obtiens une fenêtre en plus de MyForm :

    Nom : 2 fenêtres.JPG
Affichages : 1555
Taille : 39,0 Ko

  5. #5
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    si tu vas dans Editeur de liens > Système > Sous-système : /SUBSYSTEM:WINDOWS, ça fait ce que tu veux ?
    Perso quand je fais du Win32 je mets l'option en pragma, directement dans le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #pragma comment(linker, "/SUBSYSTEM:windows")
    Plus je connais de langages, plus j'aime le C.

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 059
    Points : 12 095
    Points
    12 095
    Par défaut
    Mais je ne sais pas ce qu'il faut mettre au point d'entrée.
    La même chose quand Debug.
    J'ai essayé d'indiquer le fichier .cpp mais cela ne fonctionne pas.
    C'est une fonction, pas un fichier, qu'il faut indiquer.
    Donc "main", ça doit le faire.

  7. #7
    Membre régulier
    Homme Profil pro
    Etude technique THT
    Inscrit en
    Juillet 2012
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Etude technique THT
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juillet 2012
    Messages : 84
    Points : 111
    Points
    111
    Par défaut RE SUBSYSTEM:WINDOWS et main
    Bonjour,

    En ce qui concerne le point d'entrée j'ai mis main et /SUBSYSTEM:WINDOWS comme vous me l'avez recommandé et cela a effectivement résolu mon problème d'affichage.

    Un grand merci à vous deux d'avoir trouvé la solution et pris sur votre temps.

    Cordialement.

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

Discussions similaires

  1. Erreur de compilation après modification du Uses
    Par DevelOpeR13 dans le forum Langage
    Réponses: 5
    Dernier message: 30/10/2007, 15h23
  2. Réponses: 2
    Dernier message: 23/09/2003, 15h32
  3. Réponses: 10
    Dernier message: 22/09/2003, 22h58
  4. Réponses: 4
    Dernier message: 27/08/2003, 22h34
  5. Réponses: 2
    Dernier message: 05/03/2003, 00h24

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