problem beim linken



  • ich kenne mich noch nicht so gut mit c++ builder 2009 aus. habe hier ein open source code aus internet geladen, in vc++ hatte ich kein problem gehabt, doch beim c++ builder 2009 habe ich ein problem beim linken.

    [ILINK32 Error] Error: Unresolved external '__strdup' referenced from

    strdup ist in _str.h zu finden.

    weiss jemand wie ich das fixen kann?



  • bc09neu schrieb:

    strdup ist in _str.h zu finden.

    In _str.h steht allerdings:

    #if defined(__MSC) && !defined(__MFC_COMPAT__)
    ...
    #define _strdup(s1)         strdup(s1)
    ...
    #endif  /* __MSC */
    
    #if defined(__MFC_COMPAT__)
    ...
    __inline char _FAR * _RTLENTRY  _strdup(const char _FAR *__s)
                                  { return strdup(__s); }
    ...
    #endif
    

    Wenn also die MFC-Kompatibilität eingeschaltet ist (dazu sollte es einen Compiler-Switch geben, oder aber du definierst das Makro selbst), dann gibt es eine Inline-Definition für _strdup, die wiederum strdup aufruft. Das heißt aber, daß die Objektdatei eigentlich gar keinen Verweis auf _strdup haben dürfte (der doppelte Unterstrich in der Fehlermeldung kommt daher, daß C-Funktionen ein zusätzlicher Unterstrich hinzugefügt wird).

    Kannst du in deinem Quelltext mal die Stelle suchen, wo _strdup verwendet wird, und die IDE nach der Definition suchen lassen (Strg+Klick oder Alt+Pfeiltaste oben) und sagen, wo genau du landest?


Anmelden zum Antworten