C++ MS Visual C++ LNK2001 Problem

Fireball89

Captain
Registriert
Aug. 2007
Beiträge
3.498
So,

ich bin mal kurz davor diesen Mist zu komplett aufzugeben.
Ich krieg hier die einfachsten Probleme nicht gelöst.

header:
Code:
#ifndef _MOUSEHANDLING_H_
#define _MOUSEHANDLING_H_
#include "allocationManager.h"
#include <iostream>

class mouseHandling {
private:
	static allocationManager* manager;
public:
	static unsigned __stdcall MouseThreadRoutine(void* alloc_manager);
};
#endif

source:
Code:
#include "mouseHandling.h"

unsigned __stdcall mouseHandling::MouseThreadRoutine(void* alloc_manager) {
	manager = static_cast < allocationManager* > (alloc_manager);
	return 0;
}

Hab die unwichtigen Teile rausgelöscht. Hier liegt ein Fehler, nämlich:
Code:
mouseHandling.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""private: static class allocationManager * mouseHandling::manager" (?manager@mouseHandling@@0PAVallocationManager@@A)".

Wenn ich "manager" als Membervariable streiche und "manager" innerhalb der ThreadRoutine deklariere, geht es ohne Probleme!
 
Falls er das mit dem include nicht mag, kannst du auch einfach ein class allocationManager; vor alles setzen, damit die Klasse bekannt ist. Mich würde aber eher interessieren, wie die allocationManager.h aussieht, denn irgendwas muss damit und dessen include ja nicht stimmen.
 
Du musst static Member-Variablen zusätzlich in der Source-Datei definieren:
Code:
allocationManager* mouseHandling::manager = NULL;
 
@Simpson474:
Danke, das wars. Ich finds einfach unfassbar schwer auf sowas aufmerksam zu werden ohne gescheite Fehlermeldungen.
 
Da hast du völlig Recht, die Fehlermeldungen in VC++ sind teilweise sehr bescheiden. Aber mit etwas Erfahrung kommt man damit gut klar.
 
Zurück
Oben