C++ C++;:Libcurl curl_easy_init()出现访问冲突错误并导致程序崩溃

C++ C++;:Libcurl curl_easy_init()出现访问冲突错误并导致程序崩溃,c++,curl,crash,libcurl,access-violation,C++,Curl,Crash,Libcurl,Access Violation,我正在尝试将libcurl与我正在制作的程序一起使用,但是我遇到了一些问题。到目前为止,我只尝试了libcurl网站上的示例,但是一旦程序进入curl初始化,它们就会崩溃 我当前的代码: #include <iostream> #include <curl/curl.h> int main(int argc, char *argv[]) { CURL *curl; CURLcode res; curl = curl_easy_init();

我正在尝试将libcurl与我正在制作的程序一起使用,但是我遇到了一些问题。到目前为止,我只尝试了libcurl网站上的示例,但是一旦程序进入curl初始化,它们就会崩溃

我当前的代码:

#include <iostream>
#include <curl/curl.h>

int main(int argc, char *argv[])
{
    CURL *curl;
    CURLcode res;

    curl = curl_easy_init();
    if(curl)
    {
        curl_easy_setopt(curl, CURLOPT_URL, "http://garrysmod.fi/");
        res = curl_easy_perform(curl);

        curl_easy_cleanup(curl);
    }

    return 0;
}
#包括
#包括
int main(int argc,char*argv[])
{
卷曲*卷曲;
卷曲编码;
curl=curl_easy_init();
if(curl)
{
curl\u easy\u setopt(curl,CURLOPT\u URL,“http://garrysmod.fi/");
res=旋度(curl)\u容易执行(curl);
旋度\轻松\清洁(旋度);
}
返回0;
}
我还确保编译器和链接器可以找到资源,并且dll文件(libcurl.dll)在程序的文件夹中,但它一直崩溃。 我尝试使用VS2010进行调试,但它在初始化函数curl\u easy\u init()处给了我一个“访问冲突”错误


任何帮助都将不胜感激

您可以尝试在版本编译中运行该程序,看看它是否可以正常工作。我注意到,对于我在Windows上使用的一些开源库,如果将调试版本与操作系统库的发布版本相链接,那么这些库就不能正常工作。然后,我通常会将编译器选项设置为链接调试版本中库的调试版本和发布版本中库的发布版本


不幸的是,我从来没有费心去追查这种情况发生的原因。这是值得尝试的。

这几乎肯定是DLL的不匹配。首先检查路径中是否有旧版本或不同版本的libcurl.dll


我刚刚使用VS2010 professional针对此版本为构建了您的代码段,它运行良好。

程序在我的机器上编译正常(ubuntu框):

#g++-lcurl url.c-o url

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title>Garry's Mod Finland - Etusivu</title>
    <meta h ....

加里的芬兰国防部-埃图苏

这一点很好,我以前也这么做过。但在这种情况下似乎没有。无论如何,谢谢你的回答。谢谢你!我使用的是Win32通用版本的libcurl,而不是Win32 MSVC。该程序后来也给出了一条关于zlib的错误消息,但通过下载zlib1.dll并将其放入程序文件夹中,这一错误得到了修复;对我来说就是这样。作为将来的参考,如果可以找到由DLL地狱引起的问题,我通常会根据静态库版本进行构建。我经常使用静态libs发布代码,以避免出现DLL问题。exe的额外大小值得提高可靠性。