Verlinkungsfehler externe Bibliothek



  • Servus Leute!
    Hoffe, mir kann vll jemand bei folgendem Problem weiterhelfen:

    Ich habe ein Programm geschrieben (c++; IDE: Visual Studio 2003 .net)
    bei dem ich eine selbst geschriebene Bibliothek (keine c-Standardbibliothek) einbinden möchte.
    Dabei habe ich diese Bibliothek bei meinem Programm als REFERENZ angegeben.
    Wenn ich nun die ganze SOLUTION bilde, wird zuerst fehlerfrei die Bibliothek ERSTELLT ("generating code"->"creating the library"->"BUILD succesfull"....), dann mein Programm fehlerfrei erstellt, bis es zur Verlinkung kommt. Dann bekomme ich folgenden Fehler:

    fatal error LNK1104: cannot open file '$\Visual Studio Projects\Externe_Bibliothek\Debug\Externe_Bibliothek.lib'

    Der Pfad stimmt und die Datei "Externe_Bibliothek.lib" ist auch vorhanden!
    Zusätzlich habe ich den Pfad nocheinmal bei "Additional library directories" in den Projekt-Eigenschaften angegeben. (siehe unten)
    Woran kann das liegen? Erstellt wird sie, wieso kann er sie nicht öffnen? 😕
    (Finde im Inet nichts brauchbares, da es sich bei den meisten Problemstellungen um Standardbibliotheken handelt, die dann meist nur im .../include fehlen.)

    Die wichtigsten project-properties:
    Use Mfc: Use MFC in a shared dll
    Runtime library: /MD
    no precompiled headers
    Ignore all default libraries: no
    additional library directories: pfad der bibliothek angegeben

    Schonmal Danke, für alle, die sich meiner annehmen!
    Mfg Christian


  • Mod

    Wie sinddie Projekteinstelungen wirklich?
    Der Pfad sieht ziemlich kaputt aus:
    "$\Visual Studio Projects\Externe_Bibliothek\Debug\Externe_Bibliothek.lib"



  • Hi Martin,
    vorab erstmal danke!
    Versteh nicht ganz, was du mit "wie heissen die Projekteinstellung wirklich"
    meinst.
    Der Pfad in den Projekteigenschaften ("\\fors20fa.ww005.siemens.net\z002hntmOO\Visual Studio Projects\Externe_Bibliothek") stimmt und die Datei (Externe_Bibliothek.lib) ist auch dort vorhanden, deswegen erscheint mir mein Problem etwas suspekt. 😃
    Hast du vll noch andere Ideen, an was es liegen könnte, weil wie erwähnt der Pfad stimmt.
    MfG
    Christian



  • Moin,
    hast Du Dir die Hinweise zum Fehler LNK1104 angeschaut und ausgeschlossen?

    Wie sieht es mit den Berechtigungen zu dem Pfad aus? Es scheint ja ein Netzwerkpfad zu sein, kann dort eine temp Datei angelegt werden? Hast Du schon eine andere Biblio dort erstellt und geöffnet? Versuch doch einmal die Bibliothek in einen anderen Pfad einzustellen, der keine $ Zeichen und ähnliches hat.
    Gruß
    Uwe



  • @ uwe: danke!
    Das mit den Netzwerkpfad, könnte evtl. so sein, wie du sagts.
    ich probiers mal zu umgehen...
    ist eigentlich Visual Studio 2005 abwärtskompatibel, dann probier ichs mal auf meinem laptop. Müsste aber eigentlich so sein oder?!
    Wobei man bei den Microsoft-Menschen ja nie so genau weiss!
    Ich werde euch informieren. Danke nochmal


  • Mod

    Was meinst Du mit abwärtskompatibel?

    VS-2005/08/10 code muss in keinem Fall auf einem älteren Compiler kompilieren.
    Code-Libraries (keine Import-Libs) müssen immer mit dem selben COmpiler erzeugt worden sein.
    Werden andere Objekte als PODs über die Library Schnittstellen ausgetauscht ist auch die gleiche Compiler Version zwingend.



  • @martin: Du hast Recht, diese Anmerkung war etwas unqualifiziert und ist jetzt sowieso hinfällig!
    Da der Quellcode der ganzen Geschichte schon alt ist und das
    Visual Studio 2005 mich bei jeder schlampigen Formel im Quellcode zwingt einen typecast zu machen und das ca. 80 mal, bleib ich beim VS 2003.net.
    Der alte Kompiler ist da anscheinend einfach drübergelaufen aber dass nur am Rande.
    Also am Netzwerkpfad lag es nicht! Ich bin langsam echt am Verzweifeln... 😞
    Falls jemandem noch etwas dazu einfällt, ich bin für alle Vorschläge dankbar.
    Die Bibliothek wird erfolgreich erstellt, die Pfadangaben stimmen und es spuckt einen Fehler beim Linken aus, dass er die Datei nicht öffnen kann???!!
    ahhhhh, ich verstehs nicht



  • Hallo,
    ich habe folgend mal die Hinweise für den Linkerfehler aufgelistet. Wenn Du sagst der Code ist alt, sind vielleicht noch alte .mak Dateien etc. vorhanden? Vielleicht alles mal löschen und neu aufsetzen?

    Hier nun die abzuarbeitenden Fehlermöglichkeiten (einige sind ja schon ausgeschlossen):

    Es stand nicht genügend Festplattenspeicher zur Verfügung.

    Die Datei existiert nicht.

    Der Dateiname oder Pfad wurde falsch angegeben.

    Das angegebene Laufwerk ist ungültig.

    Die Datei hat nicht die benötigten Berechtigungen.

    Der Pfad zu Dateiname überschreitet die Länge von 260 Zeichen.

    Wird die vom Linker erzeugte temporäre Datei mit LNKn benannt, existiert möglicherweise das in der Umgebungsvariablen TMP angegebene Verzeichnis nicht, oder es sind mehrere Verzeichnisse in der Umgebungsvariablen TMP angegeben. (Es sollte nur ein Verzeichnispfad in der Umgebungsvariablen TMP spezifiziert werden.)

    Tritt der Fehler bei der ausführbaren Datei auf, könnte eine ältere Version der Datei noch ausgeführt werden. Sie sollten vor dem Kompilieren der Datei diese erst abbrechen. In Windows NT oder Windows 95 können Sie zum Suchen und Entfernen von Instanzen der Anwendung das Programm PVIEW verwenden. PVIEW.EXE wird mit Visual C++ ausgeliefert.

    Tritt die Fehlermeldung bei einem Bibliotheksnamen auf, und Sie portierten die .MAK-Datei vor kurzem von einem älteren Microsoft Visual C++-Entwicklungssystem, könnte die Bibliothek nicht mehr gültig sein. Stellen Sie sicher, daß die Bibliothek auch unter diesen Bedingungen noch existiert.

    Gruß
    Uwe



  • Vielen Dank shurehand!
    Ich werd die Punkte nochmal Schritt für Schritt prüfen und dann Bescheid geben obs geklappt hat.
    MfG



  • Moin moin!
    Problem behoben!
    Es lag nicht am Netzwerkpfad (wie schon oben erwähnt) sondern an den benötigten Berechtigungen meines PCs! 😡
    Trotz allem wäre ich da ohne euch nie so schnell draufgekommen und daran verzweifelt!
    Nochmals vielen Dank, für all euere Beiträge u Ratschläge!
    MfG


Anmelden zum Antworten