Probleme bei compilieren von cURL



  • Hallo Leute,

    brauche mal wieder eure Hilfe,...

    ich versuche mich z.Z. mit einem kleinen Projekt allerdings scheitere ich schon am Anfang... 🙄

    Es geht konkret um dieses hier:
    http://www.crosswire.org/wiki/Tutorial:Compiling_%26_Installing_SWORD_on_Windows

    curl habe ich nach stunden jetzt endlich hin bekommen...
    icusword war kein Problem
    Jetzt hänge ich bei libsword...

    Ich bekommen immer folgende Fehlermeldung:

    Fehler	1	error LNK1117: Syntaxfehler in Option "VERSION:1.6.1".	C:\Users\Familie\Desktop\Crosswire\sword-1.6.2\lib\vcppmake\vc8\LINK
    Fehler	2	error LNK1181: Eingabedatei "libcurl.lib" kann nicht geöffnet werden.	C:\Users\Familie\Desktop\Crosswire\sword-1.6.2\lib\vcppmake\vc8\LINK
    Fehler	3	error LNK1181: Eingabedatei "libcurl.lib" kann nicht geöffnet werden.	C:\Users\Familie\Desktop\Crosswire\sword-1.6.2\lib\vcppmake\vc8\LINK
    

    Habe die libcurl.lib und Linker->Eingabe eingetragen

    Ich hoffe jemand kann mir helfen...

    Gruß
    pj87

    [UPDATE]

    Hab alles noch mal neu gemacht und jetzt sind 2 Fehler weg, bis auf:

    Fehler	3	error LNK1117: Syntaxfehler in Option "VERSION:1.6.1"
    

    Was bedeutet das?


  • Mod

    Du hättest doch einfach mal die Doku lesen können, oder?
    Die Versionsangabe ist falsch. Lies die Doku:
    http://msdn.microsoft.com/en-us/library/vstudio/h88b7dc8.aspx



  • Das war mir schon klar, dass das eine Option beim Linker war,--- Danke trotzdem für deine Hilfe!

    Mein Problem warum ich das nicht verstanden habe ist, dass ich nirgendwo die Version-Option finde (also das die gesetzt wurde)... Kann die in keinem meiner kompilierten Dateien finde... Also egal bei welchem der Projekte ich in den Linker->Befehlszeile gucke oder direkt unter Linker->Allgemein->Version, nirgendwo ist etwas eingetragen!

    Wo könnte ich das noch überprüfen?


  • Mod

    Bist Du sicher Du hast die richtige Configuration untersucht?

    Was steht bei Linker -> Commandline?



  • DAs ist der Inhalt:

    /FR".\Debug\" /GS /analyze- /W1 /Zc:wchar_t /I"../../../include" /I"../../../include/internal/regex" 
    /I"../../../src/utilfuns/win32" /I"../../../../curl/include" /ZI /Gm- /Od /Fd".\Debug/" /fp:precise /D "_DEBUG" 
    /D "WIN32" /D "_LIB" /D "REGEX_MALLOC" /D "SWMAKINGDLL" /D "CURLAVAILABLE" /D "CURL_STATICLIB" /D "USBINARY" 
    /D "_CRT_SECURE_NO_WARNINGS" /D "_VC80_UPGRADE=0x0710" /D "_WINDLL" /D "_MBCS" /errorReport:prompt /WX- /Zc:forScope /RTC1 
    /Gd /Oy- /MDd /Fa".\Debug/" /EHsc /nologo /Fo".\Debug/" /Fp".\Debug/libsword.pch"
    

    Habe es wegbekommen, indem ich mit Notepad++ im gesamten Projekt alle Dateien nach "VERSION:1.6.1" durchsucht habe und bin im "libsword.vcxproj" fündig geworden...
    Da war folgender Inhalt:

    <Link>      <AdditionalDependencies>libcurl.lib;ws2_32.lib;winmm.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>
          <AdditionalLibraryDirectories>../../../../curl/lib/LIB-Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
    <Version>1.6.1</Version>
          <RandomizedBaseAddress>false</RandomizedBaseAddress>
          <DataExecutionPrevention />
        </Link>
    

    Habe die Zeile mit der Version gelöscht und schon gings,... ist aber nicht ganz im Sinne des Erfinders oder?

    Habe mir jetzt nämlich eine Beispiel Datei für das libsword heruntergeladen und versucht alles einzurichten aber wenn ich das Projekt erstellen möchte sagt er mir:

    Quelle.cpp
    1>Quelle.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""private: static char * sword::SWBuf::nullStr" (?nullStr@SWBuf@sword@@0PADA)" in Funktion ""public: __thiscall sword::SWBuf::~SWBuf(void)" (??1SWBuf@sword@@QAE@XZ)".
    1>C:\Users\Familie\Desktop\Crosswire\example\Test3\Debug\Test3.exe : fatal error LNK1120: 1 nicht aufgelöste Externe
    1>
    1>Fehler beim Buildvorgang.
    

    Habe schon gegoogelt, aber die ganzen angebotenen Lösungen helfen bei mir nicht..

    Kann das mit dem fehlenden Version zusammenhängen?

    HAbe das Projekt mal hier hochgeladen, ist vielleicht einfacher mir zu helfen...
    https://dl.dropboxusercontent.com/u/42890317/Test3.zip


  • Mod

    Die Variable ist nirgendwo definiert:

    Da fehlt so etwas wie

    char * sword::SWBuf::nullStr = "";
    

    wenn das der nullStr ist!



  • Okay, aber wo muss ich das ="" einfügen? Wenn ich das hier hin einfüge:

    // Orginal: static char *nullStr;
    static char *nullStr = "";
    

    bekomme ich folgende Fehlermeldung:

    1>C:\Users\Familie\Desktop\Crosswire\example\Test3\include\swbuf.h(50): error C2864: "sword::SWBuf::nullStr": Nur statische konstante integrale Datenmember können innerhalb einer Klasse initialisiert werden.
    

    Weiter unten habe ich die genaue Definition gefunden, aber wie kann ich das da einbauen?

    inline ~SWBuf(){
    if ((buf) && (buf != nullStr))
        free(buf);
    }
    

  • Mod

    Sagt doch die Fehlermeldung:
    1. Die variable ist nicht statisch und kann deswegen nicht im Header initialisiert werden.
    2. Also musst Du diese Definition in eine Muduldatei (CPP-Datei) verschieben.

    Den Syntax habe ich Dir gegeben.


Anmelden zum Antworten