VC++ 如何屏蔽libcurl自动打印的结果?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VC++ 如何屏蔽libcurl自动打印的结果?相关的知识,希望对你有一定的参考价值。
在VC++的控制台程序中调用libcurl库,当执行curl_easy_perform后,libcurl什自动把取得的内容(不包括HTTP头)打印出来,这也不是libcurl的调试信息,请问如何关闭这个?
你没设置CURLOPT_WRITEFUNCTION,默认就输出到控制台咯
size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream)return size * nmemb;
perform之前增加这个设置
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
告诉libcurl获取到数据后将数据传给我们的write_data函数,然后你自己在write_data函数里处理就得了;处理完后返回你成功处理的字节数,我这里是没处理数据,直接返回数据大小了,如果返回大小不等于 size*nmemb,好像会返回write data error;你自己试试吧
我自己的程序没有打印,因为我压根就不关心取出来的结果。libcurl库的话,我想问问没有可以设置的参数。
VC6.0的程序结束后进程不自动结束,如何解决?
我编了个小的MFC程序,里面添加了很多动态库,还有很多的控件,结果就出现了程序关闭后进程不能结束的情况,望高手指点一下。
其中包括matcom的库文件,应该是因为它才导致的上述情况,InitM和exitM函数都调用了,思考了半个月还没找到答案,所以在此求教,奉上100财富。
补充:我的动态链接库都是隐式加载的,怎么卸载,本人菜鸟,半路出家学的MFC,多谢大家指点
非常感谢各位的回答,但是问题还是没有解决,我想可以从多线程的角度入手查找一下,还是大家来投票吧
导致你的进程不能结束,我估计是有线程阻塞。可能你的程序是多线程的,在退出时由于某种原因导致了线程阻塞,因而无法结束。如果你的DLL是你自己写的,在DllMain函数中,初学者很容易写一些线程阻塞的代码。《Windows核心编程》上有关于DLL线程阻塞的介绍。
没有代码无法帮你分析具体原因。 参考技术B 你说的情况,是因为你的程序运行了太多的东西,你的窗口并不是与进程同时存在的主窗口,也就是说,你的窗口关闭了,进程不一定中止,就像有的程序没有窗口一样。
要解决这个问题,可以重写下窗口的OnClose函数,把你调用的dll、控件,该关闭的关闭,该清理的清理,该释放的释放,一定可以解决问题(用ExitProcess\TerminateProcess很简单就可退出进程)。
不建议你用ExitProcess\TerminateProcess等函数退出进程,这样可能造成内存泄露。 参考技术C void C****Dlg::OnClose()
if(6==::MessageBox (m_hWnd,"是否要退出?","???",4+32+256))
OnUnLoad();//我自己定义的卸载函数
CDialog::OnClose();
return ;
参考技术D 专门用一个BUTTON来结束程序,发送CLOSE消息应该就可以具体代码:
void CMyDlg::OnButton2()
// TODO: Add your control notification handler code here
// ::SendMessage(AfxGetMainWnd()->m_hWnd,WM_CLOSE,0,0);
if (MessageBox("确定要退出吗?","提示",MB_YESNO|MB_DEFBUTTON2)==IDYES)
::SendMessage(AfxGetMainWnd()->m_hWnd,WM_CLOSE,0,0);
以上是我的解决方法,有什么不对的请指出. 第5个回答 2009-09-30 试着把使用完的库都关闭掉看看,还有使用完的句柄等
以上是关于VC++ 如何屏蔽libcurl自动打印的结果?的主要内容,如果未能解决你的问题,请参考以下文章