找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 4708|回复: 3

使用ACE::write_n时编译有问题

[复制链接]
发表于 2008-1-15 21:49:54 | 显示全部楼层 |阅读模式
我的ACE库编译通过了, 5.5的。
但代码中调用ACE::write_n时,链接会出现以下错误
error LNK2019: unresolved external symbol "__declspec(dllimport) int __cdecl ACE::write_n(void *,void const *,unsigned int,unsigned int *)" ([email=__imp_?write_n@ACE@@YAHPAXPBXIPAI@Z]__imp_?write_n@ACE@@YAHPAXPBXIPAI@Z[/email]) referenced in function _main

fatal error LNK1120: 1 unresolved externals

不知哪位遇到过。

代码基本上是按书上写的:
  1. #pragma comment(lib, "ace.lib")
  2. #include <ace/ACE.h>
  3. #include <ace/OS.h>
  4. #include <ace/INET_Addr.h>
  5. #include <ace/sock_connector.h>
  6. #include <ace/sock_stream.h>
  7. #include <ace/Time_Value.h>
  8. #define BUF_SIZE 1024
  9. int main(int argc, char* argv[])
  10. {
  11. ACE::init();
  12. const char *p_pathname = (argc > 1 ? argv[1] : "index.html");
  13. const char *p_server_hostname = (argc > 2 ? argv[2] : "ace.ece.uci.edu");
  14. ACE_SOCK_CONNECTOR connector;
  15. ACE_SOCK_Stream peer;
  16. ACE_INET_Addr peer_addr;
  17. ACE_Time_Value timeout(5);
  18. if(peer_addr.set(80, p_server_hostname) == -1)
  19.   return 1;
  20. if (connector.connect(peer, peer_addr, &timeout) == -1)
  21. {
  22.   if(errno = ETIME)
  23.   {
  24.    int err = GetLastError();
  25.    return 1;
  26.   }
  27. }
  28. char buf[BUF_SIZE];
  29. iovec iov[3];
  30. iov[0].iov_base = "Get ";
  31. iov[0].iov_len = 4;
  32. iov[1].iov_base = (char*)p_pathname;
  33. iov[1].iov_len = strlen(p_pathname);
  34. iov[2].iov_base = " HTTP/1.0\r\n\r\n";
  35. iov[2].iov_len = 13;
  36. peer.sendv_n(iov, 3, &timeout);
  37. ssize_t n;
  38. while((n = peer.recv(buf, sizeof(buf) - 1, &timeout)) > 0)
  39. {
  40.   //buf[n] = '\0';
  41.   //cout << buf;
  42.   ACE::write_n(ACE_STDOUT, buf, n);  //如果把这句改为上面两句编译通过
  43. }
  44. cin.get();
  45. return peer.close() == -1 ? 1 : 0;
  46. }
复制代码

我用的是VC2005
 楼主| 发表于 2008-1-15 21:50:01 | 显示全部楼层
ace.lib是release版本的库,你是不是没设置debug版本的?
 楼主| 发表于 2008-1-15 21:51:38 | 显示全部楼层
我学ACE遇到的几个问题:

1、安装的问题。

   查阅了相当多的文档与反复make了N遍,在我的linux上可以用了,但我还是不保证,我做的完全正确,只是能够进行下一步了.

2.加入ACE到我的程序中.

  使用g++ -IACE -l... -L... ..... 可以正确的运行了.总不想每回vi + g++ 吧.

  要制作一个Makefile,以前那个可以自动编译任何.cpp的Makefile找不到了.

  尝试 linux + Eclipse + CDT ->ManageC++ Project + debug,不熟, 又查了好多文档, 总算跑起来了.

3.学习c++NPV, 每一章都是经典,字字玑珠.一章要反复看N遍.如果不是以前做过linux 上的网络服务程序,+设计模式的学习,+C++经典书的研究,我早就不行了.这两本书刚出版的时候,我看了看,又放下了,因为看不懂.

4.stone说的是个好办法,我更喜欢自己手工画.建议把书上的代码都画出来,而且,每段代码最少要画2个版本.一个是最简版,不要细节,不要代码,只要你看的懂的功能描述.第2个图要画主要流程的关键函数调用.只要正确流程的,不要分支异常处理的.

5.版本差异.我下的是最新版本,建议使用书上的版本.有些差异花了我很多时间,很有挫折感.

6.循序渐进,多学多实践,多提问,不要着急.

以上是我的学习经验,希望于你有益.
发表于 2010-7-27 11:41:42 | 显示全部楼层
好建议。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

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

GMT+8, 2024-11-22 08:37 , Processed in 0.022037 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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