curlpp und Definition von Funktion für dllimport nicht zulässig
-
Hallo
wollte eigentlich mit curlpp anfangen online Programme schreiben zu lernen, aber ich habe ein komisches Problem mit dem einbinden der DLL.
ich habe die libcurl und curlpp lib in den Project Ordner wo die .h und .hpp und .cpp dateien drin sind (die .h und .hpp sind im unterordner \include) und die 2 dlls in den Ordner debug wo die exe reinkommt.
Aber VS gibt mir folgende Fehler:
Definition von Funktion für dllimport nicht zulässig
definition of dllimport function not allowedGenau diese Fehler wie hier:
http://answer.techwikihow.com/936932/wield-compiling-error-curlpp.htmlwie man hier sieht, habe ich schon google befragt, fand keine adequate Lösung
Mit freundlichen Grüßen
Sepultura
-
Wie der Fehler schon sagt: zu importierende Funktionen sollten nicht definiert werden!
Die Datei Option.inl definiert zu /exportierende Funktionen, ist also sinnvoll beim Bauen von curlpp, beim Nutzen dessen sollte sie allerdings nicht mehr im Code bezogen werden, da die Funktionen von der curlpp Bibliothek referenziert werden. Man frage sich also, warum in den eingefügten Headern von curlpp beim Importieren noch Option.inl auftaucht und finde jenes in Option.hpp:#ifdef CURLPP_INCLUDE_TEMPLATE_DEFINITIONS #include "Option.inl" #endif
Verfolge man dies weiter, findet man in internal/buildconfig.h:
#if defined(BUILDING_CURLPP) #define CURLPP_INCLUDE_TEMPLATE_DEFINITIONS #define CURLPP_TEMPLATE_EXPLICIT_INSTANTIATION #else #undef CURLPP_INCLUDE_TEMPLATE_DEFINITIONS #undef CURLPP_TEMPLATE_EXPLICIT_INSTANTIATION #endif
In config.win32.h findet sich dann auch eine Erklärung:
/* Define when building curlpp itself */ /* DO NOT define or undefine this symbol if you are building from the IDE /* using solution files for VC9. Project files define or undefine this from within the IDE */ //#define BUILDING_CURLPP
Warum also ist BUILDING_CURLPP beim Nutzen der Bibliothek noch definiert? -> Dein Zug!