ACE仅仅实例化一个对象ACE_TP_Reactor tpReactor程序就退出,请高手指教

littlefangMFC 2010-09-14 09:12:36
用VS2008+ACE5.8.2开发一个程序,只写一句话
ACE_TP_Reactor tpReactor;
编译什么的都没有问题,但程序一运行就自动退出,跟进去看,原来是函数
ACE_Handle_Set::reset (void)
{
ACE_TRACE ("ACE_Handle_Set::reset");
this->max_handle_ =
ACE_INVALID_HANDLE;
#if defined (ACE_HAS_BIG_FD_SET)
this->min_handle_ =
NUM_WORDS * WORDSIZE;
#endif /* ACE_HAS_BIG_FD_SET */
this->size_ = 0;
// #if !defined (ACE_HAS_BIG_FD_SET) Why is this here? -Steve Huston
FD_ZERO (&this->mask_);
// #endif /* ACE_HAS_BIG_FD_SET */
}
出了问题,问题出在第2句
 this->max_handle_ =
ACE_INVALID_HANDLE;
this为空,所以报错,ACE我不太懂,请高手指教如何解决
...全文
343 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
dengjy_911 2011-09-08
  • 打赏
  • 举报
回复
好像不行,回报fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #include <windows.h>错误
littlefangMFC 2010-09-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 justkk 的回复:]

参考一下http://www.cppblog.com/sandy/archive/2006/02/16/3293.html
[/Quote]我用的ACE是实验室封装好的,不过是用在VC6下的,现在要换到VS2008,我已近更新了ACE的版本了,在VS2008下重新编译过的,这个例子没有用到ACE_TP_Reactor tpReactor;啊,我很奇怪为什么实例化一个对象都会出问题
littlefangMFC 2010-09-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 oyljerry 的回复:]

直接用ACE自带的sample试试,同时看一下它的例子代码添加了什么
[/Quote]自带的例子没有问题,我搜了一下,它自带的例子没有用到ACE_TP_Reactor tpReactor;
justkk 2010-09-14
  • 打赏
  • 举报
回复
参考一下http://www.cppblog.com/sandy/archive/2006/02/16/3293.html
oyljerry 2010-09-14
  • 打赏
  • 举报
回复
直接用ACE自带的sample试试,同时看一下它的例子代码添加了什么
littlefangMFC 2010-09-14
  • 打赏
  • 举报
回复
怎么没有人啊.....高手们快来啊
littlefangMFC 2010-09-14
  • 打赏
  • 举报
回复
问题解决了,晕死。从www.acejoy.com论坛上查的,原因如下:

在包含都文件的时候,应该把ace的头文件,放到stdafx.h的最前面,比如,可以放到第一行,(我原来是放在mfc的头文件包含完的后面)。

这样,程序连接的时候,ace的多线程库,就会最先用,mfc的库,就后用,

保证了ace优先。
littlefangMFC 2010-09-14
  • 打赏
  • 举报
回复
补充一下:在程序启动时,我已经调用了
ACE::init();
进行初始化,另外我试过很多的ACE版本,也编译过ACE的MFC库,都是这个问题
littlefangMFC 2010-09-14
  • 打赏
  • 举报
回复
补充一下:我试了一下,用在非MFC程序中就没有问题,一用在MFC程序中就出问题
littlefangMFC 2010-09-14
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 ccltiancai 的回复:]
构造函数歇菜了吧。ace_tp_reactor是又封装的吧
[/Quote]不是的,是ACE自己的,我们没有动
ccltiancai 2010-09-14
  • 打赏
  • 举报
回复
构造函数歇菜了吧。ace_tp_reactor是又封装的吧
littlefangMFC 2010-09-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 justkk 的回复:]
lz试试这样呢
ACE_TP_Reactor *tpReactor = new ACE_TP_Reactor;
[/Quote]试过也是不行的
justkk 2010-09-14
  • 打赏
  • 举报
回复
lz试试这样呢
ACE_TP_Reactor *tpReactor = new ACE_TP_Reactor;

23,121

社区成员

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

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