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 allowed

    Genau diese Fehler wie hier:
    http://answer.techwikihow.com/936932/wield-compiling-error-curlpp.html

    wie 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 im{\color{Red}{im-}}/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!


Anmelden zum Antworten