[英]C++: Libcurl curl_easy_init() gives an access violation error and crashes the program
我正在嘗試將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;
}
我還確保編譯器和鏈接器可以找到資源,並且dll文件(libcurl.dll)位於程序的文件夾中,但它仍然會崩潰。 我嘗試使用VS2010進行調試,它在初始化函數curl_easy_init()中給出了“訪問沖突”錯誤。
任何幫助,將不勝感激!
這幾乎肯定是DLL的不匹配。 首先檢查您的PATH是否有任何舊版本或不同版本的libcurl.dll。
我剛剛使用VS2010專業版為你的MSVC 7.18.0 / Win32泛型的這個版本構建了你的代碼片段,它工作得很好。
程序在我的機器上編譯好(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 ....
您可以嘗試在發布編譯中運行該程序,看看它是否正常工作。 我注意到我在Windows上使用了一些開源庫,如果你將調試版本與OS庫的發布版本鏈接起來,那么事情就不會很好。 我通常會設置編譯器選項以鏈接調試版本中庫的調試版本以及發布版本中庫的發行版本。
不幸的是,我從來沒有費心去追蹤這種情況發生的原因。 這是嘗試的東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.