mit libcurl ohne dll
Ich bin mit Microsoft Visual C++ 2010, und ich brauche, um eine Anwendung, die nicht erfordert die libcurl dll. Ich bin die Definition CURL_STATICLIB in die Präprozessor-Direktiven und die Verlinkung zu libcurl.lib, libcurl_static.lib, ws2_32.lib und winmm.lib, aber es erfordert noch die dll zu arbeiten. Wenn ich nur einen link zu libcurl_static.lib, es hat Undefiniertes externes symbol Fehler. Wie bekomme ich es funktioniert?
Ich habe auch versucht, Gebäude der Quelle, aber ich bekomme 13 Fehler (wow, Unglückszahl), dass alle sagen "error C2011: 'pollfd' : 'struct' - Typ-Neudefinition". Könnte jemand mir helfen, libcurl arbeiten?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es keine einfache Antwort 🙂
Libcurl, hängt von anderen third-party-libs (es hängt davon ab, binary-distribution, die Sie verwenden). Als Sie loszuwerden DLL - du musst den link mit der entsprechenden Dritten Parteien manuell.
Ok, also der erste Punkt ist, dass Sie sollten keinen link zu libcurl.lib als es bindet Sie zu der DLL, die Sie nicht wollen.
Zweite Punkt -, wenn Sie die Verknüpfung mit libcurl_static.lib dann (wie oben erwähnt) haben Sie auch um die Verknüpfung mit Bibliotheken abhängt. Einfache Möglichkeit, dies zu tun ist, so etwas zu tun:
Aber auf diese Weise erhalten Sie drei weitere Abhängigkeiten. Alternativ können Sie die Suche nach einem Weg, um die Verknüpfung mit Ihnen statisch, aber es ist eine andere Geschichte.
Als weitere alternative könnten Sie neu erstellen libcurl_static.lib aus Quellen, die nach dem deaktivieren alle Funktionen, die Sie nicht benötigen, so entfernen Sie unerwünschte Abhängigkeiten (wie beschrieben in "Deaktivieren Bestimmter Protokolle, die im Win32-builds" von Datei INSTALLIEREN).
- Und Endpunkt - wie libcurl hat ziemlich schlechte Unterstützung für die windows Kompilierung aus den Quellen, würde ich empfehlen, Sie zu überdenken, die Idee loszuwerden curllib.dll.
Bekam ich einen statischen build von libcurl zum kompilieren und verknüpfen Sie durch Angabe HTTP_ONLY und CURL_STATICLIB in den Präprozessor-Direktiven für die libcurl project und meiner Anwendung. Dies löst alle Abhängigkeiten benötigt, die durch Protokolle, die Sie wahrscheinlich nicht brauchen. Die Anwendung funktioniert jetzt, ohne dass irgendwelche DLLs überhaupt.
Neben den oben genannten, habe ich nur benötigt, um stellen Sie sicher, dass libcurl.lib und den Pfad zur curl-include-Dateien wurden in die Anwendung von visual studio Projekt-Einstellungen.
Referenzen, die ich verwendet:
Deaktivieren Bestimmter Protokolle, die im Win32-builds:
http://curl.haxx.se/mail/lib-2011-12/0123.html
Verwendung von libcurl in Visual Studio (veraltet):
http://curl.haxx.se/libcurl/c/visual_studio.pdf