Visual Studio – zmienna w header i source

0

Witam! ;>
Mam czysto teoretyczne pytanie.
Otóż w pliku source (C++) tworzę sobie byle jaką zmienną załóżmy typu int, wszystko ok w pliku cpp ją odczytuje, natomiast pomimo deklaracji przez extern w pliku nagłówkowym nie mogę jej tam wykorzystywać. Moje pytanie czy prócz extern da się ją jakoś dorzucić do pliku .h ?
Tak jestem zielony w aplikacjach okienkowych. ;)

0

to nie ma nic do okienek.

Pokaż to kodem, bo niewiele wynika

0
#pragma once
namespace Project1 {

	using namespace System;
	using namespace System::ComponentModel;
	using namespace System::Collections;
	using namespace System::Windows::Forms;
	using namespace System::Data;
	using namespace System::Drawing;

	
	extern int przyklad2;
	extern int przyklad1;

	/// <summary>
	/// Podsumowanie informacji o MyForm
	/// </summary>
	public ref class MyForm : public System::Windows::Forms::Form
	{
	public:
		MyForm(void)
		{
			InitializeComponent();
			//
			//TODO: W tym miejscu dodaj kod konstruktora
			//
		}

	protected:
		/// <summary>
		/// Wyczyść wszystkie używane zasoby.
		/// </summary>
		~MyForm()
		{
			if (components)
			{
				delete components;
			}
		}
	private: System::Windows::Forms::Label^  label1;
	protected:

	private:
		/// <summary>
		/// Wymagana zmienna projektanta.
		/// </summary>
		System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code
		/// <summary>
		/// Metoda wymagana do obsługi projektanta — nie należy modyfikować
		/// jej zawartości w edytorze kodu.
		/// </summary>
		void InitializeComponent(void)
		{
			this->label1 = (gcnew System::Windows::Forms::Label());
			this->SuspendLayout();
			// 
			// label1
			// 
			this->label1->AutoSize = true;
			this->label1->Location = System::Drawing::Point(654, 158);
			this->label1->Name = L"label1";
			this->label1->Size = System::Drawing::Size(35, 13);
			this->label1->TabIndex = 0;
			this->label1->Text = L"label1";
			this->label1->Click += gcnew System::EventHandler(this, &MyForm::label1_Click);
			// 
			// MyForm
			// 
			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
			this->ClientSize = System::Drawing::Size(1395, 603);
			this->Controls->Add(this->label1);
			this->Name = L"MyForm";
			this->Text = L"MyForm";
			this->ResumeLayout(false);
			this->PerformLayout();

		}

	private: System::Void label1_Click(System::Object^  sender, System::EventArgs^  e) {

		label1->Text = Convert::ToString (przyklad2);
	}
	};
}
#pragma endregion
int przyklad2 = 2;



#include "MyForm.h"

using namespace System;
using namespace System::Windows::Forms;

 

[STAThread]
void main(array<String^>^ array)
{
	int przyklad1 = 1;



	Application::EnableVisualStyles();
	Application::SetCompatibleTextRenderingDefault(false);
	Project1::MyForm form;
	Application::Run(%form);

}

Błędy np:

Błąd	LNK2001	nierozpoznany symbol zewnŕtrzny "int Project1::przyklad2" (?przyklad2@Project1@@3HA)	Project1
Lub przyklad 1 lub 2 nie jest zdefiniowany
3

Deklaracja przyklad2 jest w przestrzeni Project1, a definicja nie. Zmienna przyklad1 jest zmienną lokalną, więc deklaracja z extern nic tu nie da.

1 użytkowników online, w tym zalogowanych: 0, gości: 1