Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [BCB] Compilerdirektive wird nicht vom Linker erkannt (https://www.delphipraxis.net/150019-%5Bbcb%5D-compilerdirektive-wird-nicht-vom-linker-erkannt.html)

messie 5. Apr 2010 16:20


[BCB] Compilerdirektive wird nicht vom Linker erkannt
 
Moin,

ich habe einen solchen Konstrukt probiert

Code:
#ifdef DK
  #include "Texte_DK.h"
#elif defined (GER)
  #include "Texte_GER.h"
#elif defined (IT)
  #include "Texte_IT.h"
#endif
Das funktioniert aber nur zur Entwurfszeit bzw. nur mit dem Compiler. Die IDE springt z.B. in die korrekte Datei.
Nun werden aber alle defines vom Linker ignoriert, d.h. der findet gar nichts und erzählt mir von nicht auflösbaren externen Referenzen.

Wenn ich die Headerdateien jetzt ins Projekt aufnehme, sucht der Linker nur bis zum ersten Vorhandensein der Referenz, es kommt also immer dänisch raus :shock:

Wie kann ich dem Linker beibringen, welche Datei er verwenden soll?

Danke, Messie

sx2008 6. Apr 2010 00:49

Re: [BCB] Compilerdirektive wird nicht vom Linker erkannt
 
Wenn kein Precompiler Symbol definiert ist, wird auch nichts included.
Deshalb sollte auch etwas im else-Teil stehen:
Code:
#ifdef DK
  #include "Texte_DK.h"
#elif defined (GER)
  #include "Texte_GER.h"
#elif defined (IT)
  #include "Texte_IT.h"
#else
  #include "Texte_EN.h" // default sprache
#endif

messie 6. Apr 2010 08:23

Re: [BCB] Compilerdirektive wird nicht vom Linker erkannt
 
Zitat:

Zitat von sx2008
Wenn kein Precompiler Symbol definiert ist, wird auch nichts included.
Deshalb sollte auch etwas im else-Teil stehen:
Code:
#ifdef DK
  #include "Texte_DK.h"
#elif defined (GER)
  #include "Texte_GER.h"
#elif defined (IT)
  #include "Texte_IT.h"
#else
  #include "Texte_EN.h" // default sprache
#endif

Ja, aber das hilft mir nicht gegen den Linker.

Nochmal zur Struktur: meine Texte stehen in den genannten Dateien. Für jeden Text ist eine WideString-Variable deklariert, die zusätzlich im Header als extern bekanntgegeben wird. Möglicherweise steckt darin das Problem.

Also in der cpp-Datei
Code:
WideString ParametersText = (WideString)L"\x0050\x0061\x0072\x0061\x006D\x0065\x0074\x0072\x0065";
und in der dazugehörigen Headerdatei
Code:
extern WideString ParametersText;
Ist es vielleicht nicht korrekt, auf die Headerdatei zu verweisen? Das würde mein C-Verständnis etwas erschüttern :stupid:

Grüße, Messie


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz