глоток и libcurl вместе

Я учусь делать расширения PHP и наткнулся на пост в блоге о swig. Я пытался создать код с помощью libcurl, но не могу его скомпилировать.

%{
#include <stdio.h>
#include <curl/curl.h>

bool wsper(char* url, char* postdata){
CURL* curl = curl_easy_init();
CURLcode res;
if(curl){
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postdata);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, false);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false);
res = curl_easy_perform(curl);
if(res == CURLE_OK){
curl_easy_cleanup(curl);
return true;
}else{
return false;
}
}else{
return false;
}
}
%}

%module wsper
extern bool wsper(char* url, char* postdata);

После выполнения следующих команд я не обнаружил никаких ошибок

swig -php file.c
g++ `php-config --includes` -fpic -lcurl -lcurlpp -c
wsper_wrap.c g++ -shared file_wrap.o -o file.so

но когда я пытаюсь запустить файл php, у меня появляется сообщение об ошибке:

неопределенный символ: curl_easy_perform в неизвестной строке 0

0

Решение

Ваш компоновщик неверен. Вы вызываете g ++ с -lcurl -lcurlpp в точке, где вы вызываете его с -c.

Вам нужно использовать -fpic -lcurl -lcurlpp, когда вы вызываете его с -shared и -o file.so.

Т.е. окончательная ссылка должна быть:

g++ -shared file_wrap.o -o file.so  -lcurl -lcurlpp
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]