swig 和 libcurl 在一起
swig and libcurl together
我正在学习制作 PHP 扩展,我发现了一个关于 swig 的博客 post。我尝试使用 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 文件时,出现错误提示:
undefined symbol: curl_easy_perform in Unknown line 0
您的链接器扩充是错误的。您在使用 -c 调用 g++ 时使用 -lcurl -lcurlpp 调用它。
使用-shared 和-o 调用时需要使用-fpic -lcurl -lcurlpp file.so。
即最终链接应该是:
g++ -shared file_wrap.o -o file.so -lcurl -lcurlpp
我正在学习制作 PHP 扩展,我发现了一个关于 swig 的博客 post。我尝试使用 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 文件时,出现错误提示:
undefined symbol: curl_easy_perform in Unknown line 0
您的链接器扩充是错误的。您在使用 -c 调用 g++ 时使用 -lcurl -lcurlpp 调用它。
使用-shared 和-o 调用时需要使用-fpic -lcurl -lcurlpp file.so。
即最终链接应该是:
g++ -shared file_wrap.o -o file.so -lcurl -lcurlpp