Hallo zusammen,
und der nächste, der sich mit einem Linkerfehler meldet...
Ich wollte mir eine kleine Include-Datei schreiben, die das Schreiben ins Debug-Fenster von VC++08 einfacher macht.
OutputDebug.h:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#ifndef __OUTPUTDEBUG
#define __OUTPUTDEBUG
#include <sstream>
#include <windows.h>
//Mit dem Makro kann man Strings und Zahlen direkt wie in std::ostringstream verknüpfen
#define OutputDebugStringEx(X) {\
{ std::ostringstream OutputDebugStringExObject; \
OutputDebugStringExObject << X; \
OutputDebugString(OutputDebugStringExObject.str().c_str()); \
} \
}
//void OutputDebugVector ();
#endif
|
Soweit in Ordnung. Wenn ich jetzt aber versuche, neben einem Makro auch eine "richtige" Funktion zu deklarieren, gibt es ein Problem.
Ich nehme die oben auskommentierte vorletzte Zeile wieder dazu und schreibe ein kleine Datei OutputDebug.cc:
|
C-/C++-Quelltext
|
1
2
3
4
5
|
#include <OutputDebug.h>
void OutputDebugVector ()
{
}
|
Soweit kompiliert und linkt er es noch ohne Probleme.
Wenn ich jetzt aber in einem Projekt OutputDebug.h include und dann OutputDebugVector(); aufrufen möchte, bekomme ich den Linkerfehler LNK2001:
|
C-/C++-Quelltext
|
1
|
1>Snake.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""void __cdecl OutputDebugVector(void)" (?OutputDebugVector@@YAXXZ)".
|
Haben mich sämtliche Programmierfähigkeiten verlassen, oder liegt das an irgendeinem Spezialfall, oder was ist da los? Tut mir Leid, aber ich weiß im Moment echt nicht, woran das liegt...
Viele Dank für eure Hilfe!
PPretzel