mooyee's blog

C++博客 首页 新随笔 联系 聚合 管理
  3 Posts :: 2 Stories :: 1 Comments :: 0 Trackbacks
有网友问到,他在链接的时候,产生一堆错误

我们还是先看他的代码吧.
 1// acetest2.cpp : Defines the entry point for the console application.
 2//
 3
 4// client.cpp
 5
 6#include "ace/OS_main.h"
 7#include "ace/OS_NS_string.h"
 8#include "ace/OS_NS_sys_socket.h"
 9#include "ace/OS_NS_unistd.h"
10#include "ace/OS_NS_stdlib.h"
11#include "ace/OS_NS_stdio.h"
12#include "ace/OS_NS_netdb.h"
13#include "ace/Default_Constants.h"
14
15ACE_RCSID(SOCK_SAP, client, "client.cpp,v 4.10 2005/01/21 02:19:20 ossama Exp")
16
17/* BSD socket client */
18
19int
20ACE_TMAIN (int argc, ACE_TCHAR *argv[])
21{
22  // Initialize WinSock DLL on Win32
23  ACE_OS::socket_init (ACE_WSOCK_VERSION);
24
25  struct sockaddr_in saddr;
26  struct hostent *hp;
27  const ACE_TCHAR *host = argc > 1 ? argv[1] : ACE_DEFAULT_SERVER_HOST;
28  u_short port_num =
29    htons (argc > 2 ? ACE_OS::atoi (argv[2]) : ACE_DEFAULT_SERVER_PORT);
30  int sockbufsize = argc > 3 ? ACE_OS::atoi (argv[3]) : 0;
31  char buf[BUFSIZ];
32  ACE_HANDLE s_handle;
33  int w_bytes;
34  int r_bytes;
35  int n;
36
37  // Create a local endpoint of communication.
38  if ((s_handle = ACE_OS::socket (PF_INET, SOCK_STREAM, 0)) == ACE_INVALID_HANDLE)
39    ACE_OS::perror (ACE_TEXT("socket")), ACE_OS::exit (1);
40
41  // If a sockbufsize was specified, set it for both send and receive.
42  if (sockbufsize > 0)
43  {
44    if (ACE_OS::setsockopt (s_handle, SOL_SOCKET, SO_SNDBUF,
45      (const char *&sockbufsize,
46      sizeof (sockbufsize)) != 0)
47      ACE_OS::perror (ACE_TEXT("SO_SNDBUF")), ACE_OS::exit (1);
48    if (ACE_OS::setsockopt (s_handle, SOL_SOCKET, SO_RCVBUF,
49      (const char *&sockbufsize,
50      sizeof (sockbufsize)) != 0)
51      ACE_OS::perror (ACE_TEXT("SO_RCVBUF")), ACE_OS::exit (1);
52  }

53
54  // Determine IP address of the server.
55  if ((hp = ACE_OS::gethostbyname (ACE_TEXT_ALWAYS_CHAR(host))) == 0)
56    ACE_OS::perror (ACE_TEXT("gethostbyname")), ACE_OS::exit (1);
57
58  // Set up the address information to contact the server.
59  ACE_OS::memset ((void *&saddr, 0sizeof saddr);
60  saddr.sin_family = AF_INET;
61  saddr.sin_port = port_num;
62  ACE_OS::memcpy (&saddr.sin_addr, hp->h_addr, hp->h_length);
63
64  // Establish connection with remote server.
65  if (ACE_OS::connect (s_handle,
66    reinterpret_cast<sockaddr *> (&saddr),
67    sizeof saddr) == -1)
68    ACE_OS::perror (ACE_TEXT("connect")), ACE_OS::exit (1);
69
70  // Send data to server (correctly handles "incomplete writes" due to
71  // flow control).
72
73  while ((r_bytes = ACE_OS::read (ACE_STDIN, buf, sizeof buf)) > 0)
74    for (w_bytes = 0; w_bytes < r_bytes; w_bytes += n)
75      if ((n = ACE_OS::send (s_handle, buf + w_bytes,
76        r_bytes - w_bytes)) < 0)
77        ACE_OS::perror (ACE_TEXT("write")), ACE_OS::exit (1);
78
79  if (ACE_OS::recv (s_handle, buf, 1== 1)
80    ACE_OS::write (ACE_STDOUT, buf, 1);
81
82  // Explicitly close the connection.
83  if (ACE_OS::closesocket (s_handle) == -1)
84    ACE_OS::perror (ACE_TEXT("close")), ACE_OS::exit (1);
85  return 0;
86}

87
88
89

直接编译,产生如下错误
------ Build started: Project: acetest2, Configuration: Debug Win32 ------

Compiling
acetest2.cpp
Linking
acetest2.obj : error LNK2019: unresolved external symbol 
"__declspec(dllimport) int __cdecl ace_os_main_i(class ACE_Main_Base &,int,char * * const)" (__imp_?ace_os_main_i@@YAHAAVACE_Main_Base@@HQAPAD@Z) referenced in function _main
acetest2.obj : error LNK2019: unresolved external symbol 
"__declspec(dllimport) public: __thiscall ACE_Main_Base::ACE_Main_Base(void)" (__imp_??0ACE_Main_Base@@QAE@XZ) referenced in function "public: __thiscall ACE_Main::ACE_Main(void)" (??0ACE_Main@@QAE@XZ)
acetest2.obj : error LNK2019: unresolved external symbol 
"__declspec(dllimport) int __cdecl ACE_OS::closesocket(void *)" (__imp_?closesocket@ACE_OS@@YAHPAX@Z) referenced in function "int __cdecl ace_main_i(int,char * * const)" (?ace_main_i@@YAHHQAPAD@Z)
acetest2.obj : error LNK2019: unresolved external symbol 
"__declspec(dllimport) int __cdecl ACE_OS::write(void *,void const *,unsigned int)" (__imp_?write@ACE_OS@@YAHPAXPBXI@Z) referenced in function "int __cdecl ace_main_i(int,char * * const)" (?ace_main_i@@YAHHQAPAD@Z)
acetest2.obj : error LNK2019: unresolved external symbol 
"__declspec(dllimport) int __cdecl ACE_OS::recv(void *,char *,unsigned int,int)" (__imp_?recv@ACE_OS@@YAHPAXPADIH@Z) referenced in function "int __cdecl ace_main_i(int,char * * const)" (?ace_main_i@@YAHHQAPAD@Z)
acetest2.obj : error LNK2019: unresolved external symbol 
"__declspec(dllimport) int __cdecl ACE_OS::send(void *,char const *,unsigned int,int)" (__imp_?send@ACE_OS@@YAHPAXPBDIH@Z) referenced in function "int __cdecl ace_main_i(int,char * * const)" (?ace_main_i@@YAHHQAPAD@Z)
acetest2.obj : error LNK2019: unresolved external symbol 
"__declspec(dllimport) int __cdecl ACE_OS::read(void *,void *,unsigned int)" (__imp_?read@ACE_OS@@YAHPAX0I@Z) referenced in function "int __cdecl ace_main_i(int,char * * const)" (?ace_main_i@@YAHHQAPAD@Z)
acetest2.obj : error LNK2019: unresolved external symbol 
"__declspec(dllimport) int __cdecl ACE_OS::connect(void *,struct sockaddr *,int)" (__imp_?connect@ACE_OS@@YAHPAXPAUsockaddr@@H@Z) referenced in function "int __cdecl ace_main_i(int,char * * const)" (?ace_main_i@@YAHHQAPAD@Z)
acetest2.obj : error LNK2019: unresolved external symbol 
"__declspec(dllimport) void * __cdecl ACE_OS::memcpy(void *,void const *,unsigned int)" (__imp_?memcpy@ACE_OS@@YAPAXPAXPBXI@Z) referenced in function "int __cdecl ace_main_i(int,char * * const)" (?ace_main_i@@YAHHQAPAD@Z)
acetest2.obj : error LNK2019: unresolved external symbol 
"__declspec(dllimport) void * __cdecl ACE_OS::memset(void *,int,unsigned int)" (__imp_?memset@ACE_OS@@YAPAXPAXHI@Z) referenced in function "int __cdecl ace_main_i(int,char * * const)" (?ace_main_i@@YAHHQAPAD@Z)
acetest2.obj : error LNK2019: unresolved external symbol 
"__declspec(dllimport) struct hostent * __cdecl ACE_OS::gethostbyname(char const *)" (__imp_?gethostbyname@ACE_OS@@YAPAUhostent@@PBD@Z) referenced in function "int __cdecl ace_main_i(int,char * * const)" (?ace_main_i@@YAHHQAPAD@Z)
acetest2.obj : error LNK2019: unresolved external symbol 
"__declspec(dllimport) int __cdecl ACE_OS::setsockopt(void *,int,int,char const *,int)" (__imp_?setsockopt@ACE_OS@@YAHPAXHHPBDH@Z) referenced in function "int __cdecl ace_main_i(int,char * * const)" (?ace_main_i@@YAHHQAPAD@Z)
acetest2.obj : error LNK2019: unresolved external symbol 
"__declspec(dllimport) void __cdecl ACE_OS::exit(int)" (__imp_?exit@ACE_OS@@YAXH@Z) referenced in function "int __cdecl ace_main_i(int,char * * const)" (?ace_main_i@@YAHHQAPAD@Z)
acetest2.obj : error LNK2019: unresolved external symbol 
"__declspec(dllimport) void __cdecl ACE_OS::perror(char const *)" (__imp_?perror@ACE_OS@@YAXPBD@Z) referenced in function "int __cdecl ace_main_i(int,char * * const)" (?ace_main_i@@YAHHQAPAD@Z)
acetest2.obj : error LNK2019: unresolved external symbol 
"__declspec(dllimport) void * __cdecl ACE_OS::socket(int,int,int)" (__imp_?socket@ACE_OS@@YAPAXHHH@Z) referenced in function "int __cdecl ace_main_i(int,char * * const)" (?ace_main_i@@YAHHQAPAD@Z)
acetest2.obj : error LNK2019: unresolved external symbol 
"__declspec(dllimport) int __cdecl ACE_OS::atoi(char const *)" (__imp_?atoi@ACE_OS@@YAHPBD@Z) referenced in function "int __cdecl ace_main_i(int,char * * const)" (?ace_main_i@@YAHHQAPAD@Z)
acetest2.obj : error LNK2019: unresolved external symbol 
"__declspec(dllimport) int __cdecl ACE_OS::socket_init(int,int)" (__imp_?socket_init@ACE_OS@@YAHHH@Z) referenced in function "int __cdecl ace_main_i(int,char * * const)" (?ace_main_i@@YAHHQAPAD@Z)
Debug
/acetest2.exe : fatal error LNK1120: 17 unresolved externals

解决方法,是正确的链接ace(x).lib
其中, release版对应的是ace.lib,debug对应的是aced.lib
同时,还要确保编辑器能正确找到ace(x).lib的位置.

简单的办法是加入下面的代码
#ifdef _DEBUG
#pragma  comment (lib,
"aced.lib")
#else
#pragma  comment (lib,
"ace.lib")
#endif


 

posted on 2006-03-29 09:49 stone 阅读(2722) 评论(0)  编辑 收藏 引用 所属分类: 网络编程, ACE

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理