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
    [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:<img src="images/smilies/icon_biggrin.gif" border="0" alt="" title=":D" class="inlineimg" />ata;
    	using namespace System:<img src="images/smilies/icon_biggrin.gif" border="0" alt="" title=":D" class="inlineimg" />rawing;
     
    	/// <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:<img src="images/smilies/icon_biggrin.gif" border="0" alt="" title=":D" class="inlineimg" />rawing::SizeF(6, 13);
    			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
    			this->ClientSize = System:<img src="images/smilies/icon_biggrin.gif" border="0" alt="" title=":D" class="inlineimg" />rawing::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
    RE
    ultrabody a trouvé une réponse voir ce lien http://www.developpez.net/forums/d1376701/c-cpp/outils-c-cpp/visual-cpp/vcpp-net/demarrer-projet-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:<img src="images/smilies/icon_biggrin.gif" border="0" alt="" title=":D" class="inlineimg" />ata;
    	using namespace System:<img src="images/smilies/icon_biggrin.gif" border="0" alt="" title=":D" class="inlineimg" />rawing;
     
    	/// <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:<img src="images/smilies/icon_biggrin.gif" border="0" alt="" title=":D" class="inlineimg" />rawing::SizeF(6, 13);
    			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
    			this->ClientSize = System:<img src="images/smilies/icon_biggrin.gif" border="0" alt="" title=":D" class="inlineimg" />rawing::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
    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
    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



    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 :


  5. #5
    Membre expert
    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
    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
    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.

###raw>template_hook.ano_emploi###