Bonjour,

Je commence � m'arracher les cheveux sur un truc sans doute tr�s b�te, alors j'ai d�cid� de vous demander votre aide. J'ai en effet parcouru pas mal de forums � la recherche d'une r�ponse, mais sans succ�s.

J'ai cr�� sous DEV C++ un petit programme qui lit le pixel � l'�cran, et suivant la couleur du pixel en question, r�alise une certaine action (pas la peine d'entrer dans les d�tails). Mon programme �tant compliqu�, je me suis d�cid� � passer sous Visual C++ afin de ne plus devoir g�rer les LRESULT CALLBACK et autre WinAPI qui me causaient des soucis.

Le probl�me c'est qu'apr�s reconversion pour rendre mon code compatible avec Visual, j'obtiens une erreur dont je ne sais que faire. J'ai isol� le probl�me et cr�er un programme minimal qui reproduit cette erreur. Il s'agit d'une fen�tre avec un bouton, et quand on clique sur le bouton, le programme est cens� lire le pixel (100,100).

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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
 
#pragma once
 
#include <windows.h>
 
 
unsigned Rouge;
 
COLORREF Couleur;
 
namespace GetPixel2 {
 
	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 Form1
	///
	/// AVERTISSEMENT : si vous modifiez le nom de cette classe, vous devrez modifier la
	///          propriété 'Nom du fichier de ressources' de l'outil de compilation de ressource managée
	///          pour tous les fichiers .resx dont dépend cette classe. Dans le cas contraire,
	///          les concepteurs ne pourront pas interagir correctement avec les ressources
	///          localisées associées à ce formulaire.
	/// </summary>
	public ref class Form1 : public System::Windows::Forms::Form
	{
	public:
		Form1(void)
		{
			InitializeComponent();
			//
			//TODO : ajoutez ici le code du constructeur
			//
		}
 
	protected:
		/// <summary>
		/// Nettoyage des ressources utilisées.
		/// </summary>
		~Form1()
		{
			if (components)
			{
				delete components;
			}
		}
	private: System::Windows::Forms::Button^  button1;
	protected: 
 
	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->button1 = (gcnew System::Windows::Forms::Button());
			this->SuspendLayout();
			// 
			// button1
			// 
			this->button1->Location = System::Drawing::Point(113, 92);
			this->button1->Name = L"button1";
			this->button1->Size = System::Drawing::Size(75, 23);
			this->button1->TabIndex = 0;
			this->button1->Text = L"button1";
			this->button1->UseVisualStyleBackColor = true;
			this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
			// 
			// Form1
			// 
			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
			this->ClientSize = System::Drawing::Size(292, 266);
			this->Controls->Add(this->button1);
			this->Name = L"Form1";
			this->Text = L"Form1";
			this->ResumeLayout(false);
 
		}
#pragma endregion
	private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
 
			HDC hdcScreen = GetDC(NULL);
			Couleur = GetPixel(hdcScreen,100,100);
			Rouge = GetRValue(Couleur);
 
 
			 }
	};
}
L'erreur donne �a :

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
Édition des liens en cours...
GetPixel2.obj : error LNK2028: jeton non résolu (0A00000E) "extern "C" unsigned long __stdcall GetPixel(struct HDC__ *,int,int)" (?GetPixel@@$$J212YGKPAUHDC__@@HH@Z) référencé dans la fonction "private: void __clrcall GetPixel2::Form1::button1_Click(class System::Object ^,class System::EventArgs ^)" (?button1_Click@Form1@GetPixel2@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z)
GetPixel2.obj : error LNK2028: jeton non résolu (0A00000F) "extern "C" struct HDC__ * __stdcall GetDC(struct HWND__ *)" (?GetDC@@$$J14YGPAUHDC__@@PAUHWND__@@@Z) référencé dans la fonction "private: void __clrcall GetPixel2::Form1::button1_Click(class System::Object ^,class System::EventArgs ^)" (?button1_Click@Form1@GetPixel2@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z)
GetPixel2.obj : error LNK2019: symbole externe non résolu "extern "C" unsigned long __stdcall GetPixel(struct HDC__ *,int,int)" (?GetPixel@@$$J212YGKPAUHDC__@@HH@Z) référencé dans la fonction "private: void __clrcall GetPixel2::Form1::button1_Click(class System::Object ^,class System::EventArgs ^)" (?button1_Click@Form1@GetPixel2@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z)
GetPixel2.obj : error LNK2019: symbole externe non résolu "extern "C" struct HDC__ * __stdcall GetDC(struct HWND__ *)" (?GetDC@@$$J14YGPAUHDC__@@PAUHWND__@@@Z) référencé dans la fonction "private: void __clrcall GetPixel2::Form1::button1_Click(class System::Object ^,class System::EventArgs ^)" (?button1_Click@Form1@GetPixel2@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z)
C:\Documents and Settings\Ludovic\Mes documents\Visual Studio 2005\Projects\GetPixel2\Debug\GetPixel2.exe : fatal error LNK1120: 4 externes non résolus
Je ne suis pas tr�s au point, mais je ne comprends pas o� est le probl�me. Mes librairies sont correctement charg�es (enfin j'esp�re) alors pourquoi y'a-t'il un probl�me de linkage ? Est-ce que j'utilise mal GetPixel et GetDC (probl�me de private ou autre li� � la classe) ? Mais pourquoi alors GetRValue ne pose pas de probl�me ? Pourtant cela marchait ainsi sous DEV C++, sans probl�me...

Merci beaucoup de votre aide.