[英]Fatal error: Call to undefined function curl_setopt() in Varien_Http_Adapter_Curl.php on line 87
[英]Php exntension: undefined symbol: curl_easy_setopt in Unknown on line 0
我正在編寫php擴展名,當我運行時,出現錯誤:
undefined symbol: curl_easy_setopt in Unknown on line 0
這是我的功能包括卷曲
std::string MyLib::download_file(std::string url) {
std::string buffer;
CURL *curl;
CURLcode res;
curl_global_init(CURL_GLOBAL_ALL);
curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, curl_writer);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer);
curl_easy_setopt(curl, CURLOPT_AUTOREFERER, 0L);
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 0L);
curl_easy_setopt(curl, CURLOPT_HEADER, 0L);
res = curl_easy_perform(curl);
if (res != CURLE_OK) {
return "";
}
curl_easy_cleanup(curl);
}
curl_global_cleanup();
return buffer;
}
在頭文件中:
#include <curl/curl.h>
請幫我
**這是編譯器命令和curl版本
g++ -Wall -c -O2 -std=c++11 -fpic `php-config --includes` -L/usr/lib64/libcurl.so.4 -lcurl -o main.o main.cpp
我嘗試過:
g++ -Wall -c -O2 -std=c++11 -fpic `php-config --includes` -L/usr/lib64 -lcurl -o main.o main.cpp
但是是一樣的
編號:
[root@extension]# ldd myextension.so
linux-vdso.so.1 => (0x00007fff550b2000)
libphpcpp.so => /usr/lib/libphpcpp.so (0x00007f6b375b1000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f6b372aa000)
libm.so.6 => /lib64/libm.so.6 (0x00007f6b37026000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f6b36e10000)
libc.so.6 => /lib64/libc.so.6 (0x00007f6b36a7b000)
/lib64/ld-linux-x86-64.so.2 (0x0000003b62e00000)
卷曲版本:
[root@extension]# curl-config --version
libcurl 7.19.7
您正在編寫一個c++
程序,並使用c
庫將其添加
extern "C" {
#include <curl/curl.h>
}
在c ++中,對函數名稱進行了整形以反映它們采用的參數,因此可以重載函數,帶有extern "C"
的libcurl.so
會強制編譯器使用c鏈接,從而防止名稱整形。
您還需要將生成的二進制文件與libcurl
鏈接,因為您需要添加
-lcurl
到編譯器命令。
編輯 :我注意到你有這個
-L/usr/lib64/libcurl.so.4 -lcurl
這是錯誤的,用
-L/usr/lib64 -lcurl
-L
您指定庫的搜索路徑。 -l
您可以指定soname,該名稱將在-L
指定的路徑中找到。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.