Forum: PC-Programmierung Visual Studio 2005: Unterschiedlichen Code Kompilieren durch Project Settings


von Josef (Gast)


Lesenswert?

Hallo zusammen,

eventuell ist es eine ganz einfache Frage für die Spezis hier aber ich 
finde mich in Visual Studio 2005 nicht ganz zu recht.

Folgendes Problem habe ich:
Ich habe ein Projekt welches eine DLL erstellen soll. Um dies zu testen 
habe ich eine Projektkonfiguration angelegt um eine .exe zu erstellen.
Dabei wird natürlich die Main Funktion benötigt.
Ich suche nun eigentlich ein Konfigurationspunkt wo ich einfach ein 
#Define oder ähnliches angeben kann, den ich im Quellcode auswerten 
kann.
Wenn das Define gesetzt ist wird einfach die MainFunktion ausgeblendet 
und nicht mitkompiliert und ansonsten, wenn es eine exe wird, wird diese 
mit eingebunden.

Gibt es so eine Möglichkeit?!

Besten Dank für die Antworten im Vorraus!

Gruß
Josef

von Vlad T. (vlad_tepesch)


Lesenswert?

normalerweise legt man für ein Testprogramm ein eigenes kleines Projekt 
an.
Da kannst du auch gleich testen, ob deine DLL-Interfaces korrekt sind - 
Stichworte declspec dllimport dllexport


Zu deiner eigentlichen Frage: natürlich geht das.
In den Projekt-Properties die entsprechende Konfiguration einstellen und 
unter "c/c++"/"Preprocessor"/"Preprocessor Definitions" etwas 
hinzufügen.

von Karl H. (kbuchegg)


Lesenswert?

Wenn ich deine Frage richtig interpretiere, gibt es mehrere #define an 
die du dich hängen kannst.

Schau einfach in die Project-Options, bei den C++ Optionen, was alles 
beim Präprozessor an vordefinierten Konstanten vorhanden ist.

Je nach DLL Typ sind da mehrere Definements vordefiniert, von denen du 
dir eines aussuchst

_WINDLL wäre wahrscheinlich ein guter erster Ansatz

http://msdn.microsoft.com/en-us/library/aa235516(v=vs.60).aspx

1
.....
2
3
4
#ifndef _WINDLL
5
int main()
6
{
7
  // teste meine DLL-Funktionen
8
}
9
#endif

Du kannst dir natürlich auch dein eigenes #define dafür definieren, 
welches du händisch freischaltest oder überhaupt die Testumgebung von 
der DLL trennen und in ein anderes Projekt verfrachten.

von Sebastian L. (Gast)


Lesenswert?

Hi

Seh das auch so.
Du solltest dir ein separates Test executable anlegen.

Davon abgesehen, wenn du in c# programmierst kannst du die main einfach 
drin lassen das sollte nicht weiter stören wenn du eine dll erstellst.

von Josef (Gast)


Lesenswert?

Besten Dank für die schnellen Antworten!

Der Eintrag bei Preprocessor war genau der, den ich suchte. Wusste nur 
nicht dass dies wirklich die Defines sind.

Ich bin dabei ein zusätzliches Testprogramm für die DLL zu nutzen aber 
für schnelle Funktionsüberprüfungen nutze ich gerne die EXE Version. 
Dort benötige ich dann nur Consolen Outputs zum Debuggen und bin ganz 
zufrieden damit.

Ich habe schon die ersten Gehversuche mit der DLL in einem MFC C++ 
Programm gemacht und werde nun die neue Version meiner DLL dort wieder 
einbauen.
Was passiert eigentlich mit einem printf in einer DLL wenn die DLL in 
einem MFC Programm aufgerufen wurde?!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.