LiM*_*Bei 6 c++ dll boost boost-asio
首先我做了什么(如果不仅仅是我做了一些非常愚蠢的事情,将提供最小样本):
我有一个GUI应用程序,它将支持多个网络接口来更改GUI中显示的内容.网络接口实现为在GUI启动时动态加载的插件.GUI应用程序提供了一个boost :: asio :: io_service对象,它通过对接口的引用传递,因此可以使用它来构建异步I/O. 在GUI线程中,将轮询此io_service对象以同步网络接口对内容的访问.
现在的问题是,在轮询时,io_service对象不会调用处理程序.为了缩小这个范围,我只实现了一个接口并在其中创建了io_service对象,仍然从GUI线程调用轮询并且可以工作.
我现在的问题是:将io_service对象传递给运行时加载的DLL函数是否有可能存在一般性问题?
如果情况太不清楚,我将提供一个最低限度的例子.
编辑:我觉得真的很愚蠢:)只是把最小的例子一起砍掉了 - 当然 - 就像一个魅力.这几乎意味着问题起源于该软件的其他部分.
所以感谢大家的投入!
要使这个问题至少有用一点:任何想要做类似事情的人(通过boost :: asio :: io_service进行网络同步的插件),你可以在这里下载最小的例子.
我会检查几个选项:
* 也许该对象在某个时刻被复制而不是通过引用传递;您可以将其设置为 boost::noncopyable 以防止这种情况发生。
* 检查 poll 的返回值是否大于 0 某个处理程序已运行;如果它是 0,则问题是 boost 认为没有处理程序。
* 在 GUI 应用程序中添加测试处理程序以排除与 DLL 相关的问题。
调试愉快!
归档时间: |
|
查看次数: |
1163 次 |
最近记录: |