VS2005上使用ACE
来源:互联网 发布:doug paisley知乎 编辑:程序博客网 时间:2024/05/01 06:14
昨天在VS2005上编译了ACE,在ACE_Wrappers/lib下面得到了ACE.dll, ACE.lib, ACEd.dll,
ACEd.lib这些文件,环境变量和各种路径应该设置的没问题,编译了一个例子,结果出了很多两种风格的警告(这个程序在linux下面一点问题也没有,甚至没有警告,但现在公司要求要弄到windows上):
(1)
D:/ACE_wrappers/ace/OS_NS_string.inl(110) : warning C4996: 'strcat'
was declared deprecated
C:/Program Files/Microsoft Visual Studio 8/VC/include
/string.h(78) : see declaration of 'strcat'
Message: 'This function or variable may be unsafe. Consider using
strcat_s instead. To disable deprecation, use
_CRT_SECURE_NO_DEPRECATE. See online help for details.'
(2)
D:/ACE_wrappers/ace/OS_NS_string.inl(222) : warning C4996: 'strdup'
was declared deprecated
C:/Program Files/Microsoft Visual Studio 8/VC/include
/string.h(205) : see declaration of 'strdup'
Message: 'The POSIX name for this item is deprecated. Instead,
use the ISO C++ conformant name: _strdup. See online help for
details.'
ACEd.lib这些文件,环境变量和各种路径应该设置的没问题,编译了一个例子,结果出了很多两种风格的警告(这个程序在linux下面一点问题也没有,甚至没有警告,但现在公司要求要弄到windows上):
(1)
D:/ACE_wrappers/ace/OS_NS_string.inl(110) : warning C4996: 'strcat'
was declared deprecated
C:/Program Files/Microsoft Visual Studio 8/VC/include
/string.h(78) : see declaration of 'strcat'
Message: 'This function or variable may be unsafe. Consider using
strcat_s instead. To disable deprecation, use
_CRT_SECURE_NO_DEPRECATE. See online help for details.'
(2)
D:/ACE_wrappers/ace/OS_NS_string.inl(222) : warning C4996: 'strdup'
was declared deprecated
C:/Program Files/Microsoft Visual Studio 8/VC/include
/string.h(205) : see declaration of 'strdup'
Message: 'The POSIX name for this item is deprecated. Instead,
use the ISO C++ conformant name: _strdup. See online help for
details.'
经过我google,baidu,group请教,原来这两个警告是无害的。这两个警告都是暗示涉及的函数可能会出现缓冲溢出。2005的编译器比之前的都更加严格,针对缓冲溢出,做了不少改进,2005中的一些函数,如 sprintf都建议使用 sprintf_s一类的来进行缓冲区溢出的保护.这跟ACE中相关的实现有关系,但ACE中并没有处理这些问题。
还遇到一个问题,看见google上很多人遇到过,就是UNICODE和非UNICODE问题,这需要再编译ACE的之前,在config.h中定义:
#define ACE_USE_WCHAR
#define ACE_HAS_WCHAR
#define ACE_HAS_WCHAR
并且在主程序中,不能再使用int main(int, char*[])方式,必须使用int ACE_TMAIN(int, ACE_TCHAR*[])。如果一定要使用前者,那么一定要记得在main中调用ACE::init() 和ACE::fini(),否则就会出现一个很莫名其妙的问题。具体的原因可以参考APG中关于宽字符的讲解。
- VS2005上使用ACE
- ACE - Windows下VS2005编译使用ACE库(转)
- ACE在AIX上使用
- 在Linux上使用ACE
- VS2005编译ACE
- VS2005编译ACE
- VS2005编译ACE
- VS2005编译ACE
- VS2005编译ACE
- ACE for windows vs2005
- 关于在vs2005上使用freetextbox控件
- 在IIS上发布Web(使用VS2005)
- 在Windows上使用VC编译并安装ACE
- Linux 上安装ACE
- VS2005下ACE-5.8.1安装
- ACE在VS2005和linux编译
- vs2005下编译与安装ACE
- ACE在VS2005下的配置
- java中判断字符串是否为数字的三种方法
- 编辑GridView时如何控制列宽
- Ext 2.0布局实例
- Enterprise Library 2.0 - Hello IConfigurationSource
- table自动换行
- VS2005上使用ACE
- MiniGUI移植总结
- AJAX in Web Parts With MOSS
- 用Javascript 获取指定页面元素的位置
- My97DatePicker--YJControl-For-DONET 日历控件
- Mysql日期和时间函数大全
- C#-操作XML
- PHP实现中文字串截取无乱码的方法
- 组合算法的实现