ACE框架复用的一些小问题
2007-01-06 18:24
246 查看
本人初学ACE(ACE是什么在这里就不介绍了,感兴趣的朋友要自己看一下了),在编译和使用中遇到了些问题,经过努力和其他朋友的帮忙,基本上都能解决,下面就把这些问题及其解决方法总结一下,供大家交流。接下来的实践中可能还会有问题,我会继续贴到这里,请大家批评指正。
说明一下,本人的编程环境是XP+VS2005。ACE是从官方网站上下载的新版本(2006.8)。
1.如果在用ACE的Reactor框架写网络服务端程序,编译时遇到下面这样的错误:“undefined class 'ACE_Null_Mutex'”就把#include "ace/Synch.h"加在你的头文件中。其实在编译ACE程序中经常会出现这种情况,可以根据实际问题找一找应该加载哪个头文件。
2.在编写网络程序(socks)时,还是要进行初始化,就是要用WSAStartup()API来装入ws2_32.dll这个库,如果没有初始化,使用socks函数时就会出现未初始化的错误提示信息。但是在用Reactor和Event_handle来编写程序时就不用初化,具体什么原因还不太清楚。
3.如果继承ACE_TASK_BASE类来建立线程,最好声明对象指针,以->activate()的格式来启动线程,否则有可能在运行过程中出现错误,因为线程主服务函数svc()是虚函数,直接用对象.activate()的格式调用就用不到它的动态性,所以在运行中可能就会出现错误。
4.如果在编写WINDOWS窗口程序时,使用TASK建立线程,可能会遇到这样的问题:编译和连接都没什么问题,但程序在运行时就会挂起。通过分析和试验,我发现在CONSOLE程序下,就没问题。如果在窗口(GUI)下要使用TASK对象,程序就要以main作为入口点。具体原因没有进行深入分析,请高手指教其中的原理。
具体做法:首先,要把WinMain()函数去掉,改为int main(int char* argv[])。如果窗口程序中要用到程序的实例句柄(hInstance),可以用GetModuleHandle()API来取得。其次,要在项目的“连接”属性处的“高级”上,修改程序入口点标号为main才可以连接成功。
说明一下,本人的编程环境是XP+VS2005。ACE是从官方网站上下载的新版本(2006.8)。
1.如果在用ACE的Reactor框架写网络服务端程序,编译时遇到下面这样的错误:“undefined class 'ACE_Null_Mutex'”就把#include "ace/Synch.h"加在你的头文件中。其实在编译ACE程序中经常会出现这种情况,可以根据实际问题找一找应该加载哪个头文件。
2.在编写网络程序(socks)时,还是要进行初始化,就是要用WSAStartup()API来装入ws2_32.dll这个库,如果没有初始化,使用socks函数时就会出现未初始化的错误提示信息。但是在用Reactor和Event_handle来编写程序时就不用初化,具体什么原因还不太清楚。
3.如果继承ACE_TASK_BASE类来建立线程,最好声明对象指针,以->activate()的格式来启动线程,否则有可能在运行过程中出现错误,因为线程主服务函数svc()是虚函数,直接用对象.activate()的格式调用就用不到它的动态性,所以在运行中可能就会出现错误。
4.如果在编写WINDOWS窗口程序时,使用TASK建立线程,可能会遇到这样的问题:编译和连接都没什么问题,但程序在运行时就会挂起。通过分析和试验,我发现在CONSOLE程序下,就没问题。如果在窗口(GUI)下要使用TASK对象,程序就要以main作为入口点。具体原因没有进行深入分析,请高手指教其中的原理。
具体做法:首先,要把WinMain()函数去掉,改为int main(int char* argv[])。如果窗口程序中要用到程序的实例句柄(hInstance),可以用GetModuleHandle()API来取得。其次,要在项目的“连接”属性处的“高级”上,修改程序入口点标号为main才可以连接成功。
相关文章推荐
- Struts2.1.8 验证框架(validation)的使用中遇到的一些问题(直接访问jsp遇到的错误)
- slf4j日志整合框架的一些问题
- 使用glide框架加载图片遇到的一些问题
- 使用前端框架后js动态改变样式的一些问题(select)
- 集合框架的一些问题(持续更新)
- RecyclerView复用的一些问题(Checkbox错乱)
- 问题点0807------框架设计中的一些调整
- s2sh框架搭建(辅助工具:MyEclipse)及解决一些遇到的问题
- <<C++网络编程 卷2 基于ACE和框架的系统化复用>>
- 整合三大框架出现的一些常见的问题及解决的方案
- 关于网页前端框架art.dialog的一些问题
- 《C++网络编程(卷2):基于ACE和框架的系统化复用》
- 应用程序框架的一些问题
- CI框架的一些小问题
- laravel框架安装的一些问题
- spring mvc + spring + mybatis 框架搭建 遇到的一些问题及解决方案
- 记录-项目java项目框架搭建的一些问题(maven+spring+springmvc+mybatis)
- APICloud框架——总结一下最近开发APP遇到的一些问题 (二)
- Volly框架的使用基础版及使用中的一些坑 Ace 网络篇(三)
- js+ssm框架整合的一些问题