Was heißt diese Meldung



  • Hallo Forum,

    ich möchte in meinem Projekt die Lib eines anderen benutzen und es erscheint diese Meldung:

    1>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: static unsigned int __cdecl std::char_traits<char>::length(char const *)" (?length@?$char_traits@D@std@@SAIPBD@Z) ist bereits in xflom.lib(Process.obj) definiert.
    

    Heißt das das diese Funktion sowohl in der msvcprtd.lib als auch in der xflom.lib definiert ist? Wie kann ich es machen das die Funktion aus der xflom.lib genommen wird?

    Vielen Dank



  • ^^den msvc-linker kann man z.b. zwingen, dass er immer das erste symbol nimmt, wenn mehrere gleichen namens da sind. aber sowas ist meistens pfusch. besser du sorgst dafür, dass solche mehrdeutigleiten nicht auftreten, z.b. indem du die eine 'length' funktion 'static' machst. dann ist sie nicht von aussen sichtbar und der linker kommt nicht ins grübeln. naja, weil das bei dir wie c++ aussieht: vielleicht kannste auch einen c++namespace reinbasteln, der die beiden unterscheidet (aber weils libs sind, haste wohl den quelltext nicht).
    🙂



  • kann man des net über nen preprocessor aushebeln? #ifdef oder wie das war?



  • PRIEST schrieb:

    kann man des net über nen preprocessor aushebeln? #ifdef oder wie das war?

    wenn irgendwelche libraries rumzicken, wirst du mit #ifdef wohl nicht weit kommen.
    🙂



  • hmm .. möglich .. war das mit function def. in headern? .. hatte das nur grad so im kopf .. mach grad nix mit c/c++ da vergess ich mal recht schnell was ^^



  • Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum Compiler- und IDE-Forum verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Wie kann ich den Linker denn dazu zwingen das er immer das erste Symbol nimmt? Wenn ich bestimmte Libs exludiere werden die Fehlermeldungen immer länger...

    Den Quelltext habe ich schon. Diese Meldung ist nur die erste von 58 Stück. Das OS Projekt scheint mir auch nicht in allzuguter Verfassung zu sein wenn man sich die ToDO Liste ansieht. Ich will nicht lange im Source rumwühlen sondern erstmal schauen wies läuft.



  • Diese Fehlermeldung deutet eher darauf hin, daß du die falsche Runtime-Lib benutzt (Release <-> Debug) bzw. du die externe Lib im falschen Modus einbindest. (in einer externen Lib sollten eigentlich keine Funktionen der C++ Standard-Library definiert sein, sondern diese sollten auch nur auf diese verlinken).



  • Argh: Das war es, die falsche RuntimeLib war ausgewählt. Vielen Dank Th69 🙂


Log in to reply