ACE的链接Link错误
来源:互联网 发布:数控铣床编程教学视频 编辑:程序博客网 时间:2024/05/16 10:05
2 ACE的链接Link错误
很多人在Windows使用ACE的时候往往会出现以下的Link错误。
Why do I get errors while using 'TryEnterCriticalSection'?
/ace/OS.i(2384) : error C2039:
'TryEnterCriticalSection': is not a member of '`global namespace''
其实这个错误不是由于ACE导致的,只是编译器把这个赃栽倒了ACE上。出现这个错误的原因主要是因为一些关键宏定义冲突,一般是_WIN32_WINNT,'TryEnterCriticalSection' 这个函数是NT4.0后才出现的函数,如果这个宏被定义的小于0x0400或者没有定义,那么就会出现这个错误。
所以最简单的处理方法是在自己的预定义头文件中加入一行。
#if !defined (_WIN32_WINNT)
# define _WIN32_WINNT 0x0400
#endif
其实ACE自己对于宏的处理是比较严谨的,ACE的config-win32-common.h中间就有这行定义,所以在一般而言,可以将ACE的头文件包含定义放在在顶部,这样也可以避免这个编译错误。
预定义头文件是一个良好的编程习惯,你可以将自己的大部分宏定义,include包含的本工程以外的外部.h文件。简言之就是预定义头文件中使用#include<>,表示包含工程以外文件,自己工程内部只使用#include””,表示包含当前工程目录下的文件。大部分C/C++的程序员都有过链接和一些预定义冲突错误消耗大量的时间,原来我也是如此,但是在掌握预定义头文件方法后,我几乎没有为这个问题折磨过。其实Virsual C++ 在生产MFC工程的时候,会自动帮你自动生产一个预定义头文件stdafx.h,只是我们不善利用而已。
其实对于很多编译器,使用预定义头文件还可以加快编译速度。Virusal C++的预定义会生产一个pch文件,基本可以提高编译速度一倍。Virusal C++的工程中间有专门的预定义头文件设置。C++ Builder采用可以采用的编译宏(好像是专用的)加快编译速度。大致的原理是编译器会在对预定义头文件中包含的文件进行与处理,在外部文件没有发生改动的时候,编译器可以使用编译这些文件生成的中间文件加快编译速度。
- ACE的链接Link错误
- ACE Link gettimeofday的错误
- ACE应用程序链接错误 error LNK2019 的解决办法
- TIP 链接错误 link error
- ACE劫持了main函数导致链接错误
- inline函数的link错误
- 两个常见的link错误
- 常见的VC Link错误
- 几个Link错误的解决
- error link 2001 的错误
- VC,link error,ATL 链接错误"unresolved external symbol _main"
- 创建硬链接:Invalid cross-device link错误
- 创建硬链接:Invalid cross-device link错误
- 解决VS2010链接错误:LINK :&…
- C++编译器与链接器工作原理 + Link错误
- 【ACE】ACE程序运行时,出现错误 ACE WSA Startup not initialized 的解决
- dhtmlxGrid中link链接的使用
- ios通用链接(Universal Link)的处理
- 我的一些AJAX感想
- ACE的陷阱
- 在SQL语句匹配下划线
- 用Windows Live Writer写CSDN日志
- 如何防范金融风险病毒
- ACE的链接Link错误
- 数据库设计理论及应用(4)——概念结构设计
- TCL ide
- linux/unix文件编程---简单例子
- 不要使用ACE_Timer_Hash
- Reactor定时器的精度取决于实现
- 测试不能保证质量!
- 今天发布了C++ Builder 2009 版本的 Victor 串口控件 1.5.0.0, 大家多提意见和建议
- 解决启动Oracle9i中OEM或OMS常见问题