dlerror()函数返回错误出现错误

gameboy374 2012-02-19 04:47:17
SingleTagIdentify= (short (*)(HANDLE hCom, unsigned int TagType, UBY TE *value))dlsym(handle,"SingleTagIdentify");
if(dlerror()!=NULL)
{
const char* err=dlerror();
cerr<<"cannot open"<<err<<endl;
dlclose(handle);
cout<<"SingleTagIdentify error";
return 0;
}
运行结果是:cannot openSingleTagIdentify error
我再修改一下代码“cerr<<"cannot open"<<err<<endl;”改成“ cerr<<"cannot open"<<endl;
运行结果是:cannot open
SingleTagIdentify error
很明显第一个代码没有换行;第二个代码换行了,所以问题出现在“err”上面,这是为什么呢?
...全文
637 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gameboy374 2012-02-19
  • 打赏
  • 举报
回复
恩,非常谢谢你!是这个问题,又学习了!
JoeBlackzqq 2012-02-19
  • 打赏
  • 举报
回复
上面的const char *err = NULL;要改成char *err = NULL;
JoeBlackzqq 2012-02-19
  • 打赏
  • 举报
回复
dlerror()
Get dynamic loading diagnostic information

Description:
The dlerror() function returns a NULL-terminated string (with no trailing newline) describing the last error that occurred during a call to one of the dl*() functions. If no errors have occurred, dlerror() returns NULL

你的dlerror调用了两次,即使第一次有错误,也不代表第二次也有错误。
估计你的本意是判断第一次的dlerror是否有错,这样的话,你应该改一下代码:
const char *err = NULL;
if((err=dlerror())!=NULL)
{
//const char* err=dlerror();
cerr<<"cannot open"<<err<<endl;
dlclose(handle);
cout<<"SingleTagIdentify error";
return 0;
}

gameboy374 2012-02-19
  • 打赏
  • 举报
回复
const char* err=dlerror();
是返回来的错误,这个dlerror()调用有错误吗?会不会是因为调用的错误?
qq120848369 2012-02-19
  • 打赏
  • 举报
回复
唯一的解释就是err字符串有问题, cerr<<err使cerr的流状态异常, cerr<<endl; 直接失效.

到底err是什么呢.

23,128

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧