Oppure

Loading
03/03/19 8:52
Thejuster
Ragazzi ho dei problemi nell'uso della libreria CURL

1° dunque ho scaricato la dll

2° compilata con nmake dal prompt nativo di Visual Studio e compilata come static

3° copiata e inclusa nel progetto ed inclusa


#include "curl/curl.h"

#define CURL_STATICLIB




Compilo il progetto è ok.


Aggiungo


Curl *curl = nullptr;



Compilo è ok.

Ma se inizializzo la lib


curl = curl_easy_init();



Compilando ho questo errore:

Severity    Code    Description    Project    File    Line    Suppression State
Error    LNK2019    unresolved external symbol _curl_easy_init referenced in function "int __cdecl atcommand_discord(int,struct map_session_data *,char const *,char const *)" (?atcommand_discord@@YAHHPAUmap_session_data@@PBD1@Z)    map-server    C:\RO2\rathena\src\map\atcommand.obj    1    




come posso risolvere?
Ultima modifica effettuata da Thejuster 03/03/19 9:27
mire.forumfree.it/ - Mire Engine
C# UI Designer
03/03/19 17:36
TheDarkJuster
Non capisco cosa hai fatto. Una dll è già compilata, cosa hai fatto con nmake?

Devo modificare le opzioni di compilazioni per aggiungere la directory di culr alle librerie, includere curl.lib e copiare nella direcory di output curl.dll. in alternativa compila curl staticamente se non vuoi la dll
aaa
04/03/19 19:21
Thejuster
Scusami Juster, ma come dicevo e la prima volta che lo faccio.

Dunque la libreria curl non è già compilata. l'ho compilata seguendo questo tutorial.

youtube.com/…

Ma siccome sto mettendo mani su un progetto molto grande, deve essere compatibile per linux.
perché in seguito questo programma deve essere compilato ed avviato su linux debian.

Si tratta di un server.

Dunque quello che fatto è:

Compilare la dll con visual studio tool.
Una volta compilato tutto, appaiono delle cartelle in builds.
quindi copio l'intera cartella includes e la porto nel progetto dove deve essere inclusa.
in più copio il file libcurl_a.lib e lo nella stessa cartella dove ho messo i file da includere.

successivamente modifico le proprietà del progetto, al linker.

Linker -> Input -> Addittional Dependency
ed aggiungo la variabile

$(SolutionDir)3rdpary\curl\libcurl_a.lib



in seguito


ACMD_FUNC(discord)
{
	nullpo_retr(-1, sd);

	curl_global_init(CURL_GLOBAL_ALL);  
	CURL *curl = nullptr;




Severity    Code    Description    Project    File    Line    Suppression State

Error    LNK2019    unresolved external symbol _curl_global_init referenced in function "int __cdecl atcommand_discord(int,struct map_session_data *,char const *,char const *)" (?atcommand_discord@@YAHHPAUmap_session_data@@PBD1@Z)    map-server    C:\rathena\src\map\atcommand.obj    1    

Error    LNK1120    1 unresolved externals    map-server    C:\rathena\map-server.exe    1    
mire.forumfree.it/ - Mire Engine
C# UI Designer
08/03/19 21:46
TheDarkJuster
Postato originariamente da Thejuster:
Scusami Juster, ma come dicevo e la prima volta che lo faccio.

Dunque la libreria curl non è già compilata. l'ho compilata seguendo questo tutorial.

youtube.com/…

Ma siccome sto mettendo mani su un progetto molto grande, deve essere compatibile per linux.
perché in seguito questo programma deve essere compilato ed avviato su linux debian.

Si tratta di un server.

Dunque quello che fatto è:

Compilare la dll con visual studio tool.
Una volta compilato tutto, appaiono delle cartelle in builds.
quindi copio l'intera cartella includes e la porto nel progetto dove deve essere inclusa.
in più copio il file libcurl_a.lib e lo nella stessa cartella dove ho messo i file da includere.

successivamente modifico le proprietà del progetto, al linker.

Linker -> Input -> Addittional Dependency
ed aggiungo la variabile

$(SolutionDir)3rdpary\curl\libcurl_a.lib


in seguito


ACMD_FUNC(discord)
{
	nullpo_retr(-1, sd);

	curl_global_init(CURL_GLOBAL_ALL);  
	CURL *curl = nullptr;



Severity    Code    Description    Project    File    Line    Suppression State

Error    LNK2019    unresolved external symbol _curl_global_init referenced in function "int __cdecl atcommand_discord(int,struct map_session_data *,char const *,char const *)" (?atcommand_discord@@YAHHPAUmap_session_data@@PBD1@Z)    map-server    C:\rathena\src\map\atcommand.obj    1    

Error    LNK1120    1 unresolved externals    map-server    C:\rathena\map-server.exe    1    

quello è un errore del linker e significa che la libreria non è linkata. Più di questo non posso dirti, io per non avere di questi problemi uso cmake e ti consiglio di fare altrettanto. Inoltre cmake può cercare e includere curl, vedi comando find().
aaa