Błąd linkera 2001 - nierozpoznany symbol zewnętrzny.

0

Dobry,

Mam problem z linkerem w Visual Studio 2017, gdy mam napisany w całości stary kod z Sfml 1.6. Brzmi on następująco:

1>------ Kompilacja rozpoczęta: Projekt: 4inrow - sfml 1.6, Konfiguracja: Release Win32 ------
1>E:\Visual studio\Common7\IDE\VC\VCTargets\Microsoft.CppBuild.targets(391,5): warning MSB8028: Katalog pośredni (Release\) zawiera pliki udostępnione z innego projektu (4inrow.vcxproj). Może to spowodować niepoprawne zachowanie podczas oczyszczania i ponownej kompilacji.
1>Runda.obj : error LNK2001: nierozpoznany symbol zewnętrzny "public: __thiscall PLANSZA::PLANSZA(void)" (??0PLANSZA@@QAE@XZ)
1>C:\Users\A.D\Desktop\Projekt\4inrow\Release\4inrow - sfml 1.6.exe : fatal error LNK1120: liczba nierozpoznanych elementów zewnętrznych: 1
1>Kompilowanie projektu „4inrow.vcxproj” wykonane — NIEPOWODZENIE.
========== Kompilacja: 0 zakończono powodzeniem, 1 zakończono niepowodzeniem, 0 zaktualizowano, 0 pominięto ==========

Wgrałam bibliotekę tak jak się wgrywa nowsze części sfmla. (Wcześniej było 11 takich błędów - pomieszałam w opcjach i został 1)

To nie jest kwestia kodu (raczej), więc tylko wkleję ten urywek, którego nie rozpoznaje (jest on w pliku Plansza.cpp, który określa działanie zadeklarowanej klasy Plansza w headerze):

PLANSZA::PLANSZA(sf::RenderWindow &App) : okno (App)
.
.
.

Dzięki z góry za pomoc :)

0
nierozpoznany symbol zewnętrzny "public: __thiscall PLANSZA::PLANSZA(void)"
PLANSZA::PLANSZA(sf::RenderWindow &App)

Nie masz zdefiniowanego konstruktora domyślnego (bez parametrów).

0

Nie masz zdefiniowanego konstruktora domyślnego (bez parametrów).

Stworzyłam konstruktor bezargumentowy:

PLANSZA::PLANSZA() 
{
	
}

Błąd teraz przy kompilacji jest następujący - error C2530: "PLANSZA::okno": odwołania muszą być zainicjowane

Dawno nie pisałam w Cpp - jak to naprawić? :)

0

O ile PLANSZA::okno to referencja to musisz zainicjalizować tę referencję w konstruktorze w liście inicjalizacyjnej. Może jeśli nie potrzebujesz tego konstruktora to go usuń?

0
PLANSZA::PLANSZA() ::okno
{
	
}
PLANSZA::PLANSZA(sf::RenderWindow &App) : okno (App) // konstruktor, tworzace plansze 
{
	// kolory planszy
	Kolor_planszy = sf::Color::Color(255, 255, 157);
	CzerwonyKolor = sf::Color::Color(214, 71, 0);
	NiebieskiKolor = sf::Color::Color(23, 125, 208);
	PustyKolor = sf::Color::Color(224, 224, 224);
	LiniaKolor = sf::Color::Color(232, 232, 0);
	PodkreslonyKolor = sf::Color::Color(19, 240, 57);
...
...
}

nagłówkowy:

class PLANSZA {

public:
	PLANSZA();
	PLANSZA(sf::RenderWindow &App);
	

Jak usunęłam ten konstruktor pusty to był ten błąd linkera. Jak jest to - dalej błąd z plansza:: okno
Trochę już mało myślę co robię. Jutro coś zmienię :)

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