看过《C++网络编程 卷1 》运用ACE和模式消除复杂性!

weiziyuner 2005-05-11 01:11:24
在书的P67 第3。7节的示例中的
extern char* get_url_pathname(ACE_SOCK_Stream *);
函数是那里冒出来的

我按照你提供的ACE-INSTALL.html提供的步骤配置的ACE的环境。其他的示例都可以正常的编译运行。
而运行该节的程序时却遇到问题,编译器的提示如下:
main.obj : error LNK2019: 无法解析的外部符号 "char * __cdecl get_url_pathname(class ACE_SOCK_Stream *)" (?get_url_pathname@@YAPADPAVACE_SOCK_Stream@@@Z) ,该符号在函数 "int __cdecl ace_main_i(int,char * * const)" (?ace_main_i@@YAHHQAPAD@Z) 中被引用
Debug/ACEServer.exe : fatal error LNK1120: 1 个无法解析的外部命令

---------------
程序如下:

#include "ace/Auto_Ptr.h"
#include "ace/INET_Addr.h"
#include "ace/SOCK_Acceptor.h"
#include "ace/SOCK_Stream.h"
#include "ace/Mem_Map.h"

extern char* get_url_pathname(ACE_SOCK_Stream *);

int main(int argc, char* argv[])
{
ACE_INET_Addr server_addr;
ACE_SOCK_Acceptor acceptor;
ACE_SOCK_Stream peer;

if (server_addr.set (80) == -1)
return 1;

if (acceptor.open (server_addr) == -1)
return 1;

for( ; ; )
{
if (acceptor.accept(peer) == -1)
return 1;
peer.disable (ACE_NONBLOCK);

ACE_Auto_Array_Ptr <char> pathname(get_url_pathname(&peer));
ACE_Mem_Map mapped_file (pathname.get());

if (peer.send_n (mapped_file.addr (), mapped_file.size ()) == -1)
return 1;
peer.close();
}

return acceptor.close() == -1 ? 1 : 0;
}
--------------------------------
敬请各位指点,谢谢。
...全文
363 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
weiziyuner 2005-05-24
  • 打赏
  • 举报
回复
up
bluecrest 2005-05-24
  • 打赏
  • 举报
回复
有什么问题加入ACE群

3641943
远游客-蜡台 2005-05-24
  • 打赏
  • 举报
回复
是啊,怎么还问啊
weiziyuner 2005-05-17
  • 打赏
  • 举报
回复
唉,等待高人的解答,谢谢!
ydogg 2005-05-17
  • 打赏
  • 举报
回复
在你的另外一个帖子中我已经做过解答
weiziyuner 2005-05-16
  • 打赏
  • 举报
回复
又沉了。
tanggt006 2005-05-16
  • 打赏
  • 举报
回复
帮顶奋分
tanggt006 2005-05-16
  • 打赏
  • 举报
回复
我帮你顶一下
tanggt006 2005-05-16
  • 打赏
  • 举报
回复
up
weiziyuner 2005-05-13
  • 打赏
  • 举报
回复
UP一下。
weiziyuner 2005-05-12
  • 打赏
  • 举报
回复
to fisker0303(Thinking In Love)
应该不会的,我在ACE的源代码中也没有找到类似名称的函数。
fisker0303 2005-05-12
  • 打赏
  • 举报
回复
这个东西,我不懂哦,会不会是作者笔误呢?
建议楼主找下和这个函数名字类似的函数,呵呵。
weiziyuner 2005-05-12
  • 打赏
  • 举报
回复
to oyljerry(【勇敢的心】→ ㊣Striving For,Game Over㊣)
再ace的源代码中没有这个api,但是再书中的例子里面却用了。不知道这个函数是什么地方冒出来的。


to lifengice0706(无)
这个我注意了,但是我一直使用的都是debug版本的ace,我编译上面的例子时用的也debug版本。
好像编译器提示的是找不到get_url_pathname这个函数的lib文件,即函数的实现部分。
lifengice0706 2005-05-11
  • 打赏
  • 举报
回复
楼主不知是否注意了,ace生成了aced.lib和ace.lib两个lib,前者是debug版的,后者release。我在编译ace给的示例程序时发现自己的工程环境必须和你编译的库一致,否则会有些说不清的问题,一点拙见。
oyljerry 2005-05-11
  • 打赏
  • 举报
回复
首先查找这个API,看需要哪些lib库文件等
weiziyuner 2005-05-11
  • 打赏
  • 举报
回复
楼上的能解释的清楚一点么?
谢谢。
wy99sinacom 2005-05-11
  • 打赏
  • 举报
回复
ace中默认包装了main函数,main应该替换成 int ACE_TMAIN (int, ACE_TCHAR *[])
weiziyuner 2005-05-11
  • 打赏
  • 举报
回复
有的,其他ACE的类都可以使用,惟独get_url_pathname这个函数不知道是怎么回事。
老夏Max 2005-05-11
  • 打赏
  • 举报
回复
书没有看过,不过看你的LNK2019错误,应该是缺少相关的Lib文件。你在VC的IDE中设置了路径了嘛?
Lib文件在工程中包含了嘛?

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧