peakzhang 发表于 2007-12-19 22:03:31

求救,在线等.编译ACE的问题(VS2005+ACE)

初学ACE,编译了库以后运行ACE自带的example都没有问题,自己建一个工程编写一个简单的小程序就不行了

报错:(2个)

MSVCRT.lib(crtexe.obj) : error LNK2001: 无法解析的外部符号 _main

fatal error LNK1120: 1 个无法解析的外部命令

问什么我打开ACE自带的工程编译就没问题,高手给来看看,程序就是C++网络编程第一卷里面的一个小程序



#include "ace/INET_Addr.h"
#include "ace/SOCK_Connector.h"
#include "ace/SOCK_Stream.h"

#define BUFSIZ 8


int main (int argc, char *argv[])
{
const char *pathname ="index.html";
const char *server_hostname ="www.163.com";

ACE_SOCK_Connectorconnector;
ACE_SOCK_Stream peer;
ACE _INET_Addr peer_addr;

if (peer_addr.set (80, server_hostname) == -1)
    return 1;
else if (connector.connect (peer, peer_addr) == -1)
    return 1;

char buf ;
iovec iov;
iov.iov_base = "GET ";
iov.iov_len = 4; // Length of "GET ".
iov.iov_base = pathname;
iov.iov_len = strlen (pathname);
iov iov_base = " HTTP/1.0\r\n\r\n" ;
iov.iov_len = 13; // Length of " HTTP/1.0\r\n\r\n";

if (peer.sendv_n (iov, 3) == -1)
   return 1;

for (ssize_t n; (n = peer.recv (buf, sizeof buf)) > 0; )
   ACE::write_n (ACE_STDOUT, buf, n);

return peer.close() == -1 ? 1 : 0;
}

peakzhang 发表于 2007-12-19 22:03:43

问题可以解决了。
原来使用如下定义:
int main()
{
//coding
}

会出现错误如下:
error LNK2019: 无法解析的外部符号 "int __cdecl ace_main_i(int,char * * const)" (?ace_main_i@@YAHHQAPAD@Z),该符号在函数 "private: virtual int __thiscall ACE_Main::run_i(int,char * * const)" (?run_i@ACE_Main@@EAEHHQAPAD@Z) 中被引用。

修改main函数定义形式如下:
int ACE_TMAIN (int,ACE_TCHAR *[])
{
}
程序即可通过

peakzhang 发表于 2007-12-19 22:03:52

Configuration properties -> General -> Character Set 改为Not Set
页: [1]
查看完整版本: 求救,在线等.编译ACE的问题(VS2005+ACE)