2010-03-05 31 views
0

我正在尝试编写一个简单的curl程序来检索VC++ 8.0中的网页。为MSVS设置cURL库

#include <stdio.h> 
#include <curl.h> 

int main(void) 
{ 
    CURL *curl; 
    CURLcode res; 

    curl = curl_easy_init(); 
    if(curl) { 
    curl_easy_setopt(curl, CURLOPT_URL, "curl.haxx.se"); 
    res = curl_easy_perform(curl); 
     /* always cleanup */ 
    curl_easy_cleanup(curl); 
    } 
    return 0; 
} 

我添加了include和库路径到cURL include和lib目录。它符合,但是当我尝试进入调试模式时,在处理加载期间抛出了未处理的不可持续的STATUS_DLL_NOT_FOUND异常,并且代码以-1073741515(0xc0000135)退出。

回答

1

如果您在调试模式之外运行它,它按预期工作吗?或者是否发生同样的错误?

如果它在调试模式之外不工作,您的应用程序无法找到dll。

另一个问题,你是否想从源代码编译libcurl以及你的项目,还是将它用作外部库?

如果您使用的是源代码,您可能需要编译整个解决方案,以便编译libcurl。

如果您正在使用外部库,请尝试将dll放在应用程序的工作目录中(它无法找到它)。

+0

不,它根本不起作用。我正在使用外部curllib.lib来链接项目。我试图把curlib.dll,但它仍然无法正常工作。 – cpx

+0

我不认为这是一个链接问题,因为你可以将它编译成可执行文件。 只是一个猜测...没有curllib.dll有其他依赖?我认为你正确地找到curllib.dll,ut curllib.dll本身正在寻找其他DLL来引用。特别是如果您使用的版本是SSL – maranas

+0

是的,我认为它需要像libssl32.dll这样的其他DLL。但我也下载了一个没有SSL的版本,它只附带一个DLL,它也不适用于我。我需要将它指定为延迟加载的DLL吗? – cpx

1

使用依赖关系walker来确定哪个.dll没有被加载,然后将它复制到你的路径的某个地方或者你的程序所在的同一个文件夹中。

+0

依赖walker报告CURLLIB.DLL没有找到,我下载这个版本的libcurl为MSVS http://curl.haxx.se/download/libcurl-7.19.3-win32-ssl-msvc.zip,并包括头和库路径。我不知道为什么它不能链接到DLL。 – cpx

+0

只要将curllib.dll复制到c:\ windows \ system32并再次测试即可。如果仍然失败,或许您已经使用了另一个版本的.dll,请确保您的标题和您的.dll属于相同的版本。 – Ismael

+0

将curllib.dll添加到c:\ windows \ system32后。有两个错误。 IESHIMS.DLL - 错误:由于隐式依赖模块中缺少导出功能,至少有一个模块具有未解析的导入。 WER.DLL - 警告:至少找不到一个延迟加载依赖项模块。 – cpx

0

求解! 阅读了一堆论坛后。真正的解决方案如Ismael所述。谢谢哥们!

ERROR:找不到 .... ..符号等等等等 调试器::未处理的不可继续STATUS_DLL_NOT_FOUND异常被处理负荷 该程序过程中引发“[3936] VTools.exe:母语”已退出与代码-1073741515(0xc0000135)。

说明:: 这种情况发生时的dll的不是由Visual Studio,这显然不是由Visual Studio中指出发现一个

解决方案::在我来说,我已经cutil32.dll失踪,所以我不得不将其复制到C:/ Windows/system32文件夹。 搞清楚哪个dll丢失真的很难(我讨厌这个MSFT)。 反正下载依赖walker和File->打开可执行文件(Debug或Release)。 运行它,你会发现什么DLL丢失。 在我的情况下,这些文件丢失了CUTIL32.DLL,MSVCR80.DLL,MSJAVA.DLL。 复制CUTIL32.dll解决了问题到system32文件夹。祝你好运!!