本文共 4065 字,大约阅读时间需要 13 分钟。
编译vc下:
解开压缩包以后 创建一个config.h 的文件
#define ACE_HAS_STANDARD_CPP_LIBRARY 1
#include "ace/config-win32.h"打开工程文件就可以编译库了。
编译工程 需要注意的是 路径设置 一般我会在环境变量 path 和 include 设置相应参数
然后设置为多线程编译 可惜了 我不能用editplus 编译了 要用vc 参数不会
///
我决定从example 开始看代码:
// test_log_msg.cpp,v 4.20 2003/11/10 01:48:03 dhinton Exp
// ============================================================================
//// = LIBRARY// examples/Log_Msg//// = FILENAME// test_log_msg.cpp//// = DESCRIPTION// This program tests the Log_Msg abstraction and demontrates// several use cases.//// = AUTHOR// Douglas Schmidt <>//// ============================================================================#include "ace/OS_main.h"
// FUZZ: disable check_for_streams_include
#include "ace/streams.h"#include "ace/Log_Msg.h"
#include "ace/OS_NS_unistd.h"#include "ace/OS_NS_stdlib.h"ACE_RCSID(Log_Msg, test_log_msg, "test_log_msg.cpp,v 4.20 2003/11/10 01:48:03 dhinton Exp")
static void
cleanup (void){ ACE_DEBUG ((LM_INFO, "leaving (%P)!/n"));}static void
cause_error (void){ errno = EWOULDBLOCK; ACE_ERROR ((LM_DEBUG, "would block/n"));}int
ACE_TMAIN (int argc, ACE_TCHAR *argv[]){ // Note that the default behavior is to log to STDERR...int counter = 1 ;
if (argc > 1)
{ if (ACE_LOG_MSG->open (argv[0], ACE_Log_Msg::OSTREAM) == -1) ACE_ERROR ((LM_ERROR, "cannot open logger!!!/n"));cause_error ();
// Check to see what happened. if (ACE_LOG_MSG->op_status () == -1 && ACE_LOG_MSG->errnum () == EWOULDBLOCK) ACE_DEBUG ((LM_DEBUG, "op_status and errnum work!/n")); else ACE_ERROR ((LM_ERROR, "op_status and errnum failed!/n")); } else { if (ACE_LOG_MSG->open (argv[0]) == -1) ACE_ERROR ((LM_ERROR, "cannot open logger!!!/n"));cause_error ();
// Check to see what happened.
if (ACE_LOG_MSG->op_status () == -1 && ACE_LOG_MSG->errnum () == EWOULDBLOCK) ACE_DEBUG ((LM_DEBUG, "op_status and errnum work!/n")); else ACE_ERROR ((LM_ERROR, "op_status and errnum failed!/n"));// Exercise many different combinations of STDERR and OSTREAM.
ACE_DEBUG ((LM_INFO,
"%10f, %*s%s = %d/n", 3.1416 * counter++, 8, "", "hello", 10000));ACE_LOG_MSG->set_flags (ACE_Log_Msg::OSTREAM);
ACE_LOG_MSG->msg_ostream (&cout);ACE_DEBUG ((LM_INFO,
"%10f, %*s%s = %d/n", 3.1416 * counter, 8, "", "world", 10000 * counter++));ACE_LOG_MSG->clr_flags (ACE_Log_Msg::STDERR);
ACE_DEBUG ((LM_INFO,
"%10f, %*s%s = %d/n", 3.1416 * counter, 8, "", "world", 10000 * counter++));ACE_LOG_MSG->msg_ostream (0);
ACE_LOG_MSG->set_flags (ACE_Log_Msg::STDERR);
ACE_DEBUG ((LM_INFO,
"%10f, %*s%s = %d/n", 3.1416 * counter, 8, "", "world", 10000 * counter++));ACE_LOG_MSG->clr_flags (ACE_Log_Msg::OSTREAM);
ACE_LOG_MSG->msg_ostream (&cerr);ACE_DEBUG ((LM_INFO,
"%10f, %*s%s = %d/n", 3.1416 * counter, 8, "", "world", 10000 * counter++));static int array[] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048};
// Print out the binary bytes of the array in hex form.
ACE_LOG_MSG->log_hexdump (LM_DEBUG, (char *) array, sizeof array);// Disable the LM_DEBUG and LM_INFO messages at the process level.
u_long priority_mask = ACE_LOG_MSG->priority_mask (ACE_Log_Msg::PROCESS); ACE_CLR_BITS (priority_mask, LM_DEBUG | LM_INFO); ACE_LOG_MSG->priority_mask (priority_mask, ACE_Log_Msg::PROCESS);ACE_DEBUG ((LM_INFO,
"This LM_INFO message should not print!/n")); ACE_DEBUG ((LM_DEBUG, "This LM_DEBUG message should not print!/n"));ACE_SET_BITS (priority_mask,
LM_INFO); ACE_LOG_MSG->priority_mask (priority_mask, ACE_Log_Msg::PROCESS);ACE_DEBUG ((LM_INFO,
"This LM_INFO message should print!/n")); ACE_DEBUG ((LM_DEBUG, "This LM_DEBUG message should not print!/n"));ACE_CLR_BITS (priority_mask, LM_INFO);
ACE_LOG_MSG->priority_mask (priority_mask, ACE_Log_Msg::PROCESS);ACE_DEBUG ((LM_INFO,
"This LM_INFO message should not print!/n")); ACE_DEBUG ((LM_DEBUG, "This LM_DEBUG message should not print!/n"));char badname[] = "badname";
char *l_argv[2];
l_argv[0] = badname; l_argv[1] = 0;if (ACE_OS::execv (badname,
l_argv) == -1) { ACE_ERROR ((LM_ERROR, "%n: (%x), %p%r/n", 10000, badname, cleanup)); ACE_OS::_exit (); } } return 0;}转载地址:http://xskmi.baihongyu.com/