谁用成功过boost 1_30_0的signals库了?请进

ahao 2003-07-26 04:39:08
编译什么的都成功,然后copy了一个最简单的例子,运行,在sig();这步就停住,没反应了,我在vc6和vc71上都试了,一样.谁知道怎么回事
...全文
57 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ahao 2003-07-29
  • 打赏
  • 举报
回复
upup
ahao 2003-07-29
  • 打赏
  • 举报
回复
to C3hong(孤傲无敌):
非常感谢:)刚才试的是console的程序,设置成多线程库就出现结果了,但有个问题,在程序结束时会在dbgheap.c里有assert,还没仔细研究,后来用MFC的dialog程序测试,目前好像没什么问题,再次感谢。

to sevencat(七猫):
boost的signal库和linux下的signal其实是两个概念,我觉得前者是非常有用的,实现observer模式是再好不过了。
sevencat 2003-07-29
  • 打赏
  • 举报
回复
UNIX下面这个东西到是很常见,
不过我在WIN下面好像还没看到过用信号的。
也许是我看得少吧。

肯定不是编译的问题不然根本编译不了。

你step into sig()的原代码吧。
我觉得这个库不用也罢。在LINUX开发的时候可以用一用。
ahao 2003-07-29
  • 打赏
  • 举报
回复
谢谢,不过我加了这个选项,结果还是一样
C3hong 2003-07-29
  • 打赏
  • 举报
回复
你用jam 编译的时候,漏了编译选项 -BUILD="<threading>multi",
加上就可以了
fixopen 2003-07-28
  • 打赏
  • 举报
回复
哦,这个例子!
那就不知道是怎么回事了
fixopen 2003-07-28
  • 打赏
  • 举报
回复
sig()是发信号。他会导致调用所有注册(connect)过的槽(slot)。如果slot中有些问题,那么程序有可能会死在那儿的。
ahao 2003-07-28
  • 打赏
  • 举报
回复
其实就是文档里的第一个例子,编译什么的都通过,就是运行不对:

struct HelloWorld
{
void operator()() const
{
std::cout << "Hello, World!" << std::endl;
}
};

int main()
{
// Signal with no arguments and a void return value
boost::signal0<void> sig;

// Connect a HelloWorld slot
HelloWorld hello;
sig.connect(hello);

// Call all of the slots
sig(); // 程序停在这里,没有任何输出

getch();
}
Muf 2003-07-28
  • 打赏
  • 举报
回复
贴出代码吧. 我想代码也不会很长吧.
ahao 2003-07-28
  • 打赏
  • 举报
回复
to fixopen:
你有没有试过其他的例子,有成功过的吗?
ahao 2003-07-27
  • 打赏
  • 举报
回复
up
ahao 2003-07-27
  • 打赏
  • 举报
回复
boost::signals的作用不是这样的吧
ghtsao 2003-07-27
  • 打赏
  • 举报
回复
呵呵,它要等到别的进程给它发信号它才会继续运行。它的作用就是等待信号。

24,855

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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