ace程序编译连接出错解决方案
ace程序编译连接出错
//所有代码如下 vc6.0 建立的一个win32控制台程序
#include "ace/OS.h "
#include "ace/Log_Msg.h "
#include "ace/INET_Addr.h "
#include "ace/SOCK_Dgram.h "
int send_unicast ( const ACE_INET_Addr &to )
{
const char* message = "this is the message ! \n ";
ACE_INET_Addr my_addr (ACE_static_cast (u_short,10101) );
ACE_SOCK_Dgram udp(my_addr);
ssize_t sent = udp.send(message,ACE_OS_String::strlen (message) + 1, to);
udp.close();
if(sent== -1 )
ACE_ERROR_RETURN ( (LM_ERROR,ACE_TEXT ( "%p\n "),ACE_TEXT( "send ") ),-1 );
return 0;
}
int ACE_TMAIN(int , ACE_TCHAR** )
{
ACE_INET_Addr sentD(10101,ACE_LOCALHOST);
send_unicast(sentD);
return 0;
}
我下载的是ACE-5.5 编译ACE-5.5时用的是win32 release
config.h的内容是
#include "ace/config-win32.h "
生成的一个ACE.lib
在编译时 出现的错误是
Linking...
C.OBJ : error LNK2001: unresolved external symbol "__declspec(dllimport) unsigned int __cdecl ACE_OS::strlen(char const *) " (__imp_?strlen@ACE_OS@@YAIPBD@Z)
C.OBJ : error LNK2001: unresolved external symbol ___CxxFrameHandler
C.OBJ : error LNK2001: unresolved external symbol __except_list
C.OBJ : error LNK2001: unresolved external symbol __chkesp
LINK : error LNK2001: unresolved external symbol _mainCRTStartup
Debug/T.exe : fatal error LNK1120: 5 unresolved externals
请问是怎么回事
------解决方案--------------------
首先要Build你的ACE
我假定你Build了 Debug 版,那么然后加入
#pragma comment ( lib, "aced.lib " )
再重新生成编译方案。
/******************************************************
* 程序如下,我加入了链接选项
*****************************************************/
#include "ace/OS.h "
#include "ace/Log_Msg.h "
#include "ace/INET_Addr.h "
#include "ace/SOCK_Dgram.h "
#pragma comment ( lib, "aced.lib " )
int send_unicast ( const ACE_INET_Addr &to )
{
const char* message = "this is the message ! \n ";
ACE_INET_Addr my_addr (ACE_static_cast (u_short,10101) );
ACE_SOCK_Dgram udp(my_addr);
ssize_t sent = udp.send(message,ACE_OS_String::strlen (message) + 1, to);
udp.close();
if(sent== -1 )
ACE_ERROR_RETURN ( (LM_ERROR,ACE_TEXT ( "%p\n "),ACE_TEXT( "send ") ),-1 );
return 0;
}
int ACE_TMAIN(int , ACE_TCHAR** )
{
ACE_INET_Addr sentD(10101,ACE_LOCALHOST);
send_unicast(sentD);
return 0;
}
然后就会得到
------ 已启动生成: 项目: test2, 配置: Debug Win32 ------
正在编译...
test2.cpp
正在链接...
生成日志保存在“file://d:\Visual Studio Projects\test2\Debug\BuildLog.htm”中
test2 - 0 错误,0 警告
---------------------- 完成 ---------------------
//所有代码如下 vc6.0 建立的一个win32控制台程序
#include "ace/OS.h "
#include "ace/Log_Msg.h "
#include "ace/INET_Addr.h "
#include "ace/SOCK_Dgram.h "
int send_unicast ( const ACE_INET_Addr &to )
{
const char* message = "this is the message ! \n ";
ACE_INET_Addr my_addr (ACE_static_cast (u_short,10101) );
ACE_SOCK_Dgram udp(my_addr);
ssize_t sent = udp.send(message,ACE_OS_String::strlen (message) + 1, to);
udp.close();
if(sent== -1 )
ACE_ERROR_RETURN ( (LM_ERROR,ACE_TEXT ( "%p\n "),ACE_TEXT( "send ") ),-1 );
return 0;
}
int ACE_TMAIN(int , ACE_TCHAR** )
{
ACE_INET_Addr sentD(10101,ACE_LOCALHOST);
send_unicast(sentD);
return 0;
}
我下载的是ACE-5.5 编译ACE-5.5时用的是win32 release
config.h的内容是
#include "ace/config-win32.h "
生成的一个ACE.lib
在编译时 出现的错误是
Linking...
C.OBJ : error LNK2001: unresolved external symbol "__declspec(dllimport) unsigned int __cdecl ACE_OS::strlen(char const *) " (__imp_?strlen@ACE_OS@@YAIPBD@Z)
C.OBJ : error LNK2001: unresolved external symbol ___CxxFrameHandler
C.OBJ : error LNK2001: unresolved external symbol __except_list
C.OBJ : error LNK2001: unresolved external symbol __chkesp
LINK : error LNK2001: unresolved external symbol _mainCRTStartup
Debug/T.exe : fatal error LNK1120: 5 unresolved externals
请问是怎么回事
------解决方案--------------------
首先要Build你的ACE
我假定你Build了 Debug 版,那么然后加入
#pragma comment ( lib, "aced.lib " )
再重新生成编译方案。
/******************************************************
* 程序如下,我加入了链接选项
*****************************************************/
#include "ace/OS.h "
#include "ace/Log_Msg.h "
#include "ace/INET_Addr.h "
#include "ace/SOCK_Dgram.h "
#pragma comment ( lib, "aced.lib " )
int send_unicast ( const ACE_INET_Addr &to )
{
const char* message = "this is the message ! \n ";
ACE_INET_Addr my_addr (ACE_static_cast (u_short,10101) );
ACE_SOCK_Dgram udp(my_addr);
ssize_t sent = udp.send(message,ACE_OS_String::strlen (message) + 1, to);
udp.close();
if(sent== -1 )
ACE_ERROR_RETURN ( (LM_ERROR,ACE_TEXT ( "%p\n "),ACE_TEXT( "send ") ),-1 );
return 0;
}
int ACE_TMAIN(int , ACE_TCHAR** )
{
ACE_INET_Addr sentD(10101,ACE_LOCALHOST);
send_unicast(sentD);
return 0;
}
然后就会得到
------ 已启动生成: 项目: test2, 配置: Debug Win32 ------
正在编译...
test2.cpp
正在链接...
生成日志保存在“file://d:\Visual Studio Projects\test2\Debug\BuildLog.htm”中
test2 - 0 错误,0 警告
---------------------- 完成 ---------------------