Wie bindet man Präprozessordirektiven mit eigenen Symbolen richtig ein

10/09/2007 - 14:52 von Thomas Meutzner | Report spam
Hallo,

ich möchte eine gemeinsame DLL für PCs mit dem Framework 2 und mobile
Geràte mit dem Compactframework 1 und dem Compactframework 2
entwicklen.

Diese DLL hat nur die Namespaces SYSTEM, SYSTEM.NET und
SYSTEM.NET.SOCKETS "gemappt".
Ich muss aber in dieser DLL eine API-Funktion aufrufe, die ich per
DLLImport einbinde. Da auf dem PC dabei die Kernel32.dll und unter
Windows CE die coredll.dll angesprochen wird, wollte ich diese aufrufe
mit Hilfe einer Pràprozessordirektive einbinden.

Dies sollte so aussehen:
#if _WINCE
[DllImport("coredll.dll")]
static extern bool SetLocalTime(ref SYSTEMTIME time);
#else
[DllImport("kernel32.dll")] static extern bool
SetLocalTime(ref SYSTEMTIME time);
#endif

Ich hatte schon ein wenig gegoogelt, bin mir aber nicht 100% sicher
wie ich diese richtig einbinde. Die Variable bzw. das Symbol _WINCE
sollte man in den Projekteigentschaften einbinden. Diese muss true
sein, wenn die DLL unter dem Compactframework eingesetzt werden soll.
Dazu muss man wohl auch den Konfigurations-Manager bemühen.
Hat jemand eine genauere Anleitung, wie man solche Symbole in seine
DLLs einbettet und diese dann auch im Build-Prozess korrekt angebunden
werden?
Vielen Dank

MfG
Thomas Meutzner
 

Lesen sie die antworten

#1 Carl Christian Schaffert
11/09/2007 - 12:08 | Warnen spam
Hallo Thomas,

Dies sollte so aussehen:
#if _WINCE
[DllImport("coredll.dll")]
static extern bool SetLocalTime(ref SYSTEMTIME time);
#else
[DllImport("kernel32.dll")] static extern bool
SetLocalTime(ref SYSTEMTIME time);
#endif



um solche Directiven benutzen zu können musst du sie einfach in den
Properties eingeben.

also:
Properties öffnen...
auf Build klicken...
dort unter "general/conditional compilation symbols deine directiven
eintragen und schon hat es sich.

Worauf du vorher achten solltest ist, dass unter "Configuration" der
Modus(Active(Debug), Debug,Active, All Configurations) eingestellt ist in
dem deine directiven gültigkeit haben sollen. Du kannst durch Semikolon
getrennt mehrere Directiven eingeben.

I hope that helps ;-)

Gruß Carl

Ähnliche fragen