我們還是先看他的代碼吧.
//?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

15
ACE_RCSID(SOCK_SAP,?client,?"client.cpp,v?4.10?2005/01/21?02:19:20?ossama?Exp")16

17

/**//*?BSD?socket?client?*/18

19
int20
ACE_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,?0,?sizeof?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?to71
??//?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
?



