找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 3418|回复: 1

ACE程序 部署问题

[复制链接]
发表于 2007-12-11 22:21:19 | 显示全部楼层 |阅读模式
我刚用 VS2005 编译了ACE5.5,成生了ace.dll aced.dll 和ace.lib aced.lib等,并用这些写了简单的测试程序,运行通过了;
但当我将编译通过的SimpleServer.exe 和aced.dll部署到另外一台机器上运行时却爆出以下错误,不知是何问题
d:\SimpleServer.exe
由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题。
本人开发环境为:ACE5.5 + vs2005 + windows 2003 server

SimpleServer 的代码如下:
  1. #include "ace/INET_Addr.h"
  2. #include "ace/SOCK_Stream.h"
  3. #include "ace/SOCK_Acceptor.h"
  4. #include "ace/Log_Msg.h"
  5. #include "ace/OS_NS_sys_time.h" // for ACE_Time_Value
  6. #define MAXHOSTNAMELEN 50
  7. int ACE_TMAIN (int, ACE_TCHAR *[])
  8. {
  9.     ACE_INET_Addr port_to_listen (50000, ACE_LOCALHOST);
  10.     ACE_SOCK_Acceptor acceptor;
  11.     if (acceptor.open (port_to_listen, 1) == -1)
  12.         ACE_ERROR_RETURN ((LM_ERROR,
  13.         ACE_TEXT ("%p\n"),
  14.         ACE_TEXT ("acceptor.open")),
  15.         100);
  16.     /*
  17.     * The complete open signature:
  18.     *
  19.     int open (const ACE_Addr &local_sap,
  20.     int reuse_addr = 0,
  21.     int protocol_family = PF_INET,
  22.     int backlog = ACE_DEFAULT_BACKLOG,
  23.     int protocol = 0);
  24.     *
  25.     */
  26.     while (1)
  27.     {
  28.         ACE_SOCK_Stream peer;
  29.         ACE_INET_Addr peer_addr;
  30.         ACE_Time_Value timeout (10, 0);
  31.         /*
  32.         /* Basic acceptor usage
  33.         /*/
  34. #if 0
  35.         if (acceptor.accept (peer) == -1)
  36.             ACE_ERROR_RETURN ((LM_ERROR,
  37.             ACE_TEXT ("(%P|%t) Failed to accept ")
  38.             ACE_TEXT ("client connection\n")),
  39.             100);
  40.         else
  41.         {
  42.             ACE_TCHAR peer_name[MAXHOSTNAMELEN];
  43.             peer_addr.addr_to_string (peer_name, MAXHOSTNAMELEN);
  44.             ACE_DEBUG ((LM_DEBUG,
  45.                 ACE_TEXT ("(%P|%t) Connection from %s\n"),
  46.                 peer_name));
  47.             char buffer[4096];
  48.             ssize_t bytes_received;
  49.             while ((bytes_received =
  50.                 peer.recv (buffer, sizeof(buffer))) != -1)
  51.             {
  52.                 peer.send_n (buffer, bytes_received);
  53.             }
  54.             peer.close ();
  55.         }
  56. #endif /* 0 */
  57.         if (acceptor.accept (peer, &peer_addr, &timeout, 0) == -1)
  58.         {
  59.             if (ACE_OS::last_error() == EINTR)
  60.                 ACE_DEBUG ((LM_DEBUG,
  61.                 ACE_TEXT ("(%P|%t) Interrupted while ")
  62.                 ACE_TEXT ("waiting for connection\n")));
  63.             else
  64.                 if (ACE_OS::last_error() == ETIMEDOUT)
  65.                     ACE_DEBUG ((LM_DEBUG,
  66.                     ACE_TEXT ("(%P|%t) Timeout while ")
  67.                     ACE_TEXT ("waiting for connection\n")));
  68.         }
  69.         else
  70.         {
  71.             ACE_TCHAR peer_name[MAXHOSTNAMELEN];
  72.             peer_addr.addr_to_string (peer_name, MAXHOSTNAMELEN);
  73.             ACE_DEBUG ((LM_DEBUG,
  74.                 ACE_TEXT ("(%P|%t) Connection from %s\n"),
  75.                 peer_name));
  76.             char buffer[4096];
  77.             ssize_t bytes_received;
  78.             while ((bytes_received =
  79.                 peer.recv (buffer, sizeof(buffer))) != -1)
  80.             {
  81.                 peer.send_n (buffer, bytes_received);
  82.             }
  83.             peer.close ();
  84.         }
  85.     }
  86.     return (0);
  87. }
复制代码
望高手指教,在线等。。。
 楼主| 发表于 2007-12-11 22:21:32 | 显示全部楼层
原因:CRT版本问题,vs2005编译下的“

由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题。

”问题解决方案如下:

需要将Microsoft.VC80.DebugCRT.manifest和Microsoft.VC80.CRT.manifest至于目标机器应用程序运行目录下或放到system32下
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-5-20 06:59 , Processed in 0.017676 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表