Prbleme mit unresolved external



  • Hallo zusammen,

    ich möchte in ein neues Borland c++-Projekt eine Klasse verwenden, die ich im Internet gefunden hab. Diese Klasse kann man als Package in den BCB integrieren und hat dann die Komponente mit der man per dann programmieren kann.

    Nun möchte ich diese Klasse ohne das Package zu installieren benutzen können. Dazu habe ich mir die .hpp Datei in mein Projektverzeichnis kopiert und über

    #include "Email.hpp"
    

    in mein Projekt eingebunden. Ich kann auch ein Objekt folgendermaßen definieren:

    TEmail *email;
    

    dann kann ich über dieses Objekt an die Properties und Methoden zugreifen.

    z.B.

    email->Subject = "Das ist ein Test";
    

    usw.

    Wenn ich nun aber mein Projekt compilieren lassen möchte, bringt er mir folgenden Fehler:

    [Linker Fehler] Unresolved external '__fastcall Email::TEmail::Logon()' referenced from E:\MAPI\UNIT1.OBJ
    [Linker Fehler] Unresolved external '__fastcall Email::TEmail::SendMail()' referenced from E:\MAPI\UNIT1.OBJ
    [Linker Fehler] Unresolved external '__fastcall Email::TEmail::Logoff()' referenced from E:\MAPI\UNIT1.OBJ

    denn ich habe diese Methoden auch aufgerufen:

    email->Logon();
    email->SendMail();
    email->Logoff();
    

    woran liegt das denn und wie kann ich das beheben?? Gerade die drei methoden sind ja für den Emailversand die wichtigsten!



  • Du musst die mitgelieferte lib-Datei deinem Projekt hinzufügen.
    Das geht über Projekt->Dem Projekt hinzufügen.
    Falls das nicht hilft versuch mal die hpp-Datei in der Header-Datei deines Projekts und nicht in der cpp zu includen. Manchmal tut das auch :p



  • Schon mal danke!

    Ich habe jetzt das #include in meine .h kopiert, aber das hat nicht funktioniert.
    Hab auch mal nach der .lib - Datei geschaut. Ich habe keine!! Geht das auch mit einer anderen??



  • skluge schrieb:

    Dazu habe ich mir die .hpp Datei in mein Projektverzeichnis kopiert und über

    #include "Email.hpp"
    

    in mein Projekt eingebunden.

    Hast du sie (die hpp) auch zum Projekt hinzugefügt?



  • Ja hab ich! So wie ich das sehe, findet er die Methoden nicht, oder?!
    Müsste dazu nicht auch noch eine .cpp - Datei existieren in der dann die Methoden definiert sind??

    z.B.

    TEmail::SendMail()



  • Mit Hinzufügen meine ich Projekt->Dem Projekt hinzufügen (wie von rean für die vermeintliche lib vorgeschlagen). Du auch?

    Ansonsten: poste du doch einfach den Link zu der Klasse, damit das ggf. praktisch nachvollzogen werden kann.



  • Hallo zusammen,

    für den Zugriff auf eine MSAccess-DB möchte ich gerne die Verbindung über ODBC nutzen. Da die Auswahl der DB dynamisch, per FileOpenDialog erfolgen sollte, muss ich mir für den Zugriff eine ODBC-Verbindung einrichten. Ein statischer Eintrag von Hand über den ODBC-Administrator oder auch "Systemsteuerung->Verwaltung->Datenquellen(ODBC)" funktioniert problemlos, ist halt leider statisch.

    Um nun eine ODBC-Verbindung einzurichten ohne den User der mit dem Tool später arbeiten sollte zu belästigen, möchte ich die Funktion

    BOOL SQLConfigDataSource(
         HWND      hwndParent,
         WORD      fRequest,
         LPCSTR      lpszDriver,
         LPCSTR      lpszAttributes);
    

    nutzen.
    Habe mich dafür an die MSDN gehalten worin folgende Artikel stehen:

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odbc/htm/odbcsqlconfigdatasource.asp
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore98/HTML/_core_data_source.3a_.programmatically_configuring_an_odbc_data_source.asp
    http://support.microsoft.com/?scid=kb%3Ben-us%3B149558&x=16&y=17

    Wie im 2. Artikel...

    ...To use ::SQLConfigDataSource, you must include the ODBCINST.H header file and use the ODBCINST.LIB import library. Also, ODBCCP32.DLL must be in the path at run time...

    ...und im 3. Artikel beschrieben...

    ...To use the installer DLL functions, you must:

    • Use #include <ODBCINST.H>...
    • Link with Odbccp32.lib for 32-bit applications.
    ...

    ...habe ich die Anweisung #include <ODBCINST.H> in meiner xy.h inkludiert
    und die Dateien ODBCCP32.LIB und ODBCCP32.DLL über "Projekt->Dem Projekt hinzufügen..." hinzugefügt.

    So, lange Rede, kurze Fehlermeldung:

    [Linker Fehler] Error: 'C:\PROGRAMME\BORLAND\BDS\4.0\LIB\ODBCCP32.LIB' contains invalid OMF record, Typ 0x21 (möglicherweise COFF)
    

    Bin schon seit Tagen da dran und jetzt ein bisschen ratlos 😕

    Bitte helft mir...



  • Hallo

    liegt daran das die .lib-Datei ein falsches (meist Visual Studio-) Format hat. Lösung siehe hier.

    bis bald
    akari



  • Hallo akari,

    vielen Dank!!!

    Kaum macht mans richtig schon klappts 🙂

    Gruß


Anmelden zum Antworten