Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php扩展:未定义符号:第0行的curl\u easy\u setopt in未知_Php_C++ - Fatal编程技术网

Php扩展:未定义符号:第0行的curl\u easy\u setopt in未知

Php扩展:未定义符号:第0行的curl\u easy\u setopt in未知,php,c++,Php,C++,我正在编写一个php扩展,当我运行时,出现了一个错误: 未定义符号:第0行的curl\u easy\u setopt in Unknown 这是我的函数 std::string MyLib::下载文件(std::string url){ 字符串缓冲区; 卷曲*卷曲; 卷曲编码; curl\u global\u init(curl\u global\u ALL); curl=curl_easy_init(); if(curl){ curl_easy_setopt(curl,CURLOPT_U

我正在编写一个php扩展,当我运行时,出现了一个错误:

未定义符号:第0行的curl\u easy\u setopt in Unknown
这是我的函数

std::string MyLib::下载文件(std::string url){
字符串缓冲区;
卷曲*卷曲;
卷曲编码;
curl\u global\u init(curl\u global\u ALL);
curl=curl_easy_init();
if(curl){
curl_easy_setopt(curl,CURLOPT_URL,URL.c_str());
curl\u easy\u setopt(curl,CURLOPT\u WRITEFUNCTION,curl\u writer);
curl_easy_setopt(curl、CURLOPT_WRITEDATA和buffer);
curl\u easy\u setopt(curl,CURLOPT\u AUTOREFERER,0L);
curl_easy_setopt(curl,CURLOPT_FOLLOWLOCATION,0L);
卷曲头(卷曲头,卷曲头,0L);
res=旋度(curl)\u容易执行(curl);
如果(res!=卷曲(OK){
返回“”;
}
旋度\轻松\清洁(旋度);
}
curl_global_cleanup();
返回缓冲区;
}
在头文件中:

#包括
请帮帮我

**这是编译器命令和curl版本

g++-Wall-c-O2-std=c++11-fpic`php-config——包括`-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(0x00007F6B3702600)
libgcc_.s.so.1=>/lib64/libgcc_.so.1(0x00007f6b36e10000)
libc.so.6=>/lib64/libc.so.6(0x00007f6b36a7b000)
/lib64/ld-linux-x86-64.so.2(0x0000003b62e00000)
卷曲版本:

[root@extension]#curl-config——版本
libcurl 7.19.7

您正在编写一个
c++
程序,使用
c
库只需添加这个

extern "C" {
    #include <curl/curl.h>
}
到编译器命令

编辑:我注意到您有这个

-L/usr/lib64/libcurl.so.4 -lcurl 
这是错误的,用你的话来纠正它

-L/usr/lib64 -lcurl
  • -L
    指定库的搜索路径
  • -l
    指定soname,该soname将在使用
    -l
    指定的路径中找到

您正在编写一个
c++
程序,使用
c
库只需添加这个

extern "C" {
    #include <curl/curl.h>
}
到编译器命令

编辑:我注意到您有这个

-L/usr/lib64/libcurl.so.4 -lcurl 
这是错误的,用你的话来纠正它

-L/usr/lib64 -lcurl
  • -L
    指定库的搜索路径
  • -l
    指定soname,该soname将在使用
    -l
    指定的路径中找到

您正在编写一个
c++
程序,使用
c
库只需添加这个

extern "C" {
    #include <curl/curl.h>
}
到编译器命令

编辑:我注意到您有这个

-L/usr/lib64/libcurl.so.4 -lcurl 
这是错误的,用你的话来纠正它

-L/usr/lib64 -lcurl
  • -L
    指定库的搜索路径
  • -l
    指定soname,该soname将在使用
    -l
    指定的路径中找到

您正在编写一个
c++
程序,使用
c
库只需添加这个

extern "C" {
    #include <curl/curl.h>
}
到编译器命令

编辑:我注意到您有这个

-L/usr/lib64/libcurl.so.4 -lcurl 
这是错误的,用你的话来纠正它

-L/usr/lib64 -lcurl
  • -L
    指定库的搜索路径
  • -l
    指定soname,该soname将在使用
    -l
    指定的路径中找到


请发布Makefile或编译命令。这是链接错误吗?你链接库了吗?@cmidi是的,我链接了请发布生成文件或编译命令。这是链接错误吗?你链接库了吗?@cmidi是的,我链接了请发布生成文件或编译命令。这是链接错误吗?你链接库了吗?@cmidi是的,我链接了请发布生成文件或编译命令。这是链接错误吗?你链接库了吗?@cmidi是的,我链接了,当编译器使用g++时,我添加了
-lcurl
,但它仍然是一样的error@MrJerry确保每次包含
curl.h
时都使用
extern“C”
。是的。以前,当我手工编写php时,它就起作用了。在我重新安装PHP流之后,它返回到错误<代码> -L/UR/LB64/LBCURL。所以4 - LCURL < /代码>这是错误的,用<代码> -L/USR/LIB64—LCURL</代码> @使您正确。为什么您使用C++?是的,我在用G++编译时添加了代码> -LCURL</代码>,但它仍然是相同的。error@MrJerry确保使用
extern“C”
每次包括
curl.h
。是的。以前,当我手工编写php时,它就起作用了。在我重新安装PHP流之后,它返回到错误<代码> -L/UR/LB64/LBCURL。所以4 - LCURL < /代码>这是错误的,用<代码> -L/USR/LIB64—LCURL</代码> @使您正确。为什么您使用C++?是的,我在用G++编译时添加了代码> -LCURL</代码>,但它仍然是相同的。error@MrJerry确保使用
extern“C”
每次包括
curl.h
。是的。以前,当我手工编写php时,它就起作用了。在我重新安装PHP流之后,它返回到错误<代码> -L/UR/LB64/LBCURL。所以4 - LCURL < /代码>这是错误的,用<代码> -L/USR/LIB64—LCURL</代码> @使您正确。为什么您使用C++?是的,我在用G++编译时添加了代码> -LCURL</代码>,但它仍然是相同的。error@MrJerry确保使用
extern“C”
每次包括
curl.h
。是的。以前,当我手工编写php时,它就起作用了。在我重新安装PHP流之后,它返回上面的错误<代码> -L/Ur/LB64/LBCURL。所以4 - LCURL < /代码>这是错误的,请用<代码> -L/USR/LIB64—LCURL</代码> @ MrJerry,为什么使用C++?