任何人都知道怎么做?我试过但curl_global_init
总是有问题“这个函数不是线程安全的。当程序中的任何其他线程(即共享相同内存的线程)正在运行时,你不能调用它。这不仅仅意味着没有其他线程使用libcurl。 curl_global_init()调用同样线程不安全的其他库的函数,它可能与使用这些其他库的任何其他线程冲突。“
从本教程http://devx.com/cplus/Article/9857#codeitemarea开始,我的服务正常运行,只需添加以下内容:
if (rand() == -1) curl_global_init(CURL_GLOBAL_ALL);
我收到错误1053:服务没有及时响应启动或控制请求。即使只是调用curl_version()也会导致错误。
感谢。
答案 0 :(得分:1)
在拆分线程之前,只需发出curl_global_init()
:
int main()
{
if ( curl_global_init(CURL_GLOBAL_ALL) ) {
panic();
}
// here goes your program
}
答案 1 :(得分:0)
以SERVICE_WIN32_OWN_PROCESS
安装您的服务。显然,您自己的服务不应该在您调用curl_global_init
时创建任何线程。你不应该在ReportSvcStatus(SERVICE_RUNNING)
之前创建线程,所以这应该不是什么大问题。只需在州curl_global_init
内拨打SERVICE_START_PENDING
。
答案 2 :(得分:0)
我认为你的问题不在于线程,就像你做的那样:
if (rand() == -1) curl_global_init(CURL_GLOBAL_ALL);
然后curl_global_init
永远不会运行。
但必须链接curl库。我认为这是您的问题 - 您的服务无法找到或加载此库。也许服务无法找到它,因为没有shell它没有正确的PATH。