我想创建一个在C ++中使用libcurl的win32 DLL。我可以运行curl init和escape但是我无法执行CURLOPT_URL。这是我的代码:
EXPORT_VBNET char *MyExported( char *a, char *b){
const char* success = "executed!";
const char* failed = "error!";
char * result;
result = new char[strlen(failed) + 1];
strcpy(result, failed);
CURL *curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://127.0.0.1/"); // ERROR Debug Assertion Failed!
curl_easy_perform(curl);
result = new char[strlen(success) + 1];
strcpy(result, success);
}
return result;}
我的代码可以编译,但是当我调用dll时,我收到错误“Debug Assertion Failed!”。那么我应该怎么做才能修复我的代码,我的意思是这有什么问题?
如果有人回答,我将不胜感激。因为我花了很多时间来搜索这个问题。 :)
答案 0 :(得分:0)
您应该从Win32 DLL中调用curl_global_init(CURL_GLOBAL_DEFAULT),而不是从VB.NET层调用。此外,在Win32 DLL本身内部封装所有libcurl api调用,如curl_easy_cleanup()等。从API设计的角度来看,您可以将用于初始化,清理等的单独方法导出到VB.NET层。
答案 1 :(得分:0)
是的@Asesh是对的,但是Curl_global_init与我的代码中的问题无关。问题出在我的运行时库和看到此链接后
https://curl.haxx.se/mail/lib-2011-10/0085.html。我已经解决了我的问题。
C:\ libcurl中\建立\的libcurl-VC10 86释放静电-IPv6的SSPI-winssl
到
C:\ libcurl中\建立\的libcurl-VC10 86调试静电-IPv6的SSPI-winssl (包括& Lib目录)
Libcurl_a.lib 到 libcurl_a_debug.lib。
使用运行时库/ MDd。
最后:)。