Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Borland C++ Builder » Error: Unresolved external function

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
26.04.2005, 16:37 Uhr
~halloigel
Gast


Hallo,

mein Programm benutzt statische Bibliotheken. Wenn ich:

bcc32 -c -I%PATH%\include -Ic:%PATH%\include\win32 myC.cpp mylib

benutze, wird die OBJ-Datei erzeugt.

Aber, wenn ich:

bcc32 -tWD myC.obj

benutze, dann bekomme ich folgenden Fehler:

Error: Unresolved external '_function1' referenced from myC.obj

function1 ist in mylib.cpp (mylib.h) vorhanden.

Kann mir bitte jemand helfen?
Danke!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
26.04.2005, 23:40 Uhr
Pablo
Supertux
(Operator)


->
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
27.04.2005, 08:43 Uhr
ao

(Operator)


Gibts in der mylib.h folgendes Konstrukt?

C++:
#ifdef __cplusplus
extern "C" {
#endif

int function1 (); /* oder wie auch immer der Prototyp aussieht */

#ifdef __cplusplus
}
#endif


Wenn ja: Das sagt dem C++-Compiler, dass die Funktionen aus diesem Modul mit C-Namenskonvention aufgerufen werden sollen und dass das C++-Name-Mangling abgeschaltet werden soll. Das darf nur dann sein, wenn der dahinterliegende Quelltext (hier mylib.cpp) auch wirklich mit dem C- (nicht C++)-Compiler übersetzt wird.

Also:

Wenn mylib.cpp C++-mäßig übersetzt wird, darf mylib.h die #ifdef ... #endif-Konstrukte nicht enthalten.

Wenn die C-Namensgebung gewollt ist, dann bringe den Compiler dazu, mylib im C-Modus zu übersetzen: mylib.cpp nach mylib.c umbenennen oder die Compileroption anwenden, die bcc32 zwingt, mylib.cpp trotz der .cpp-Extension als C zu übersetzen (könnte das -p oder -P- oder was ähnliches sein?

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
27.04.2005, 11:34 Uhr
~halloigel
Gast


Hallo,

ich habe das Problem lösen können, hier einen Hinweis wenn es jemand in der Zukunft helfen könnte.

Pass auf! Die Bibliotheken müssen den Pfad finden können!

Entweder liegen sie im gleichen Verzeichnis oder die Pfad muss im bcc32.cfg angegeben werden.

Die folgende Linie hat funktioniert:
bcc32 -tWD myC mylib.cpp mylib2.lib

mylib2.lib musste adhiert werden, da Funktionen von mylib2.lib von mylib.cpp benutzt werden.

Danke für die Hilfe und ich hoffe, dass diese Info anderen nützlich ist.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Borland C++ Builder ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: