Microsoft TCP SDK sample的编译问题

silentwins 2012-12-27 11:17:14
系统:DOS 6.22
编译工具: Borland C 3.0
被编译程序:MSTCPSDK DOS Sample client.c
下载地址:http://download.csdn.net/detail/silentwins/4935568

故事背景:楼主接手了一个程序,程序在楼主的环境下正常运行,还能跟服务器端程序通讯(证明楼主的网络驱动配置没有错误)。楼主要对这个程序进行一点小小的扩展,可是拿源码一编译,出错。问对方是如何编译的,由于时间太久远,稳定性还好,所以对方也很久没碰这个程序,记得也不太清楚了。后来发现SDK里面有Sample,就企图编译一下,发现编译Sample的错误跟楼主编译程序的几乎一样。现在楼主企图以编译Sample为目标,希望大家予以帮助!

楼主的编译过程:
1.复制源代码中的MSTCPSDK\INCLUDE和MSTCPSDK\LIB里面的文件拷贝到DOS系统中的C:\BORLANDC\INCLUDE和Z:\BORLANDC\LIB里
2.复制MSTCPSDK\DSAMPLE到DOS系统的C:\
3.CD C:\DSAMPLE
4.BCC client.c

输出结果:
Borland C++  Version 3.1 Copyright (c) 1992 Borland International
client.c:
Warning client.c 89: Call to function 'sleep' with no prototype in function main
Warning client.c 135: Function should return a value in function main
Warning client.c 137: Undefined structure 'servent'
Warning client.c 137: Undefined structure 'protoent'
Warning client.c 137: Undefined structure 'netent'
Warning client.c 137: Undefined structure 'hostent'
Turbo Link Version 5.1 Copyright (c) 1992 Borland International
Error: Undefined symbol __close_socket in module client.c
Error: Undefined symbol __recv in module client.c
Error: Undefined symbol __send in module client.c
Error: Undefined symbol __connect in module client.c
Error: Undefined symbol _inet_addr in module client.c
Error: Undefined symbol _htons in module client.c
Error: Undefined symbol __socket in module client.c


Available memory 3793056



其实楼主是个C语言菜鸟,因此也活活地折腾了一整天,Google、Bing都用尽了,搜索到有说Link不对的答案,可惜楼主也不知道怎么Link才是。最可恶的是,提交上CSDN的时候,点了一下发表帖子,很慢,再点一下预览,更慢,又点了一下发表帖子,直接找不到网页了,后退内容也找不见了,楼主气愤愤活生生地又重打了一遍帖子。谢谢了!
...全文
333 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
silentwins 2013-01-16
  • 打赏
  • 举报
回复
能否容许我小up一下。
silentwins 2013-01-15
  • 打赏
  • 举报
回复
Hi Turingo, 近来有点事情,这个长时间没有处理这个问题,耽误了你的时间才对。 我用你的方法编译了一下,出现一个警告,应该没什么大问题吧?谢谢! Turbo C++ Version 3.00 Copyright (c) 1992 Borland International client.c: Warning client.c 135: Function should return a value in function main Warning client.c 137: Undefined structure 'servent' Warning client.c 137: Undefined structure 'protoent' Warning client.c 137: Undefined structure 'netent' Warning client.c 137: Undefined structure 'hostent' Turbo Link Version 5.1 Copyright (c) 1992 Borland International Available memory 3744416 之前看见sleep、strlen之类的函数也会出现一些警告,不知道是什么原因引起的,请问出现这个警告会不会引起程序不能正常运作的呢? Warning client.c 89: Call to function 'sleep' with no prototype in function main
ForestDB 2013-01-05
  • 打赏
  • 举报
回复
为啥一定要在BC下编译?
kndyc 2013-01-04
  • 打赏
  • 举报
回复
楼主你多试试bcc的编译选项,修改内存模式,指定文件的路径,看看行不行? 如果有多个c文件,需要分别编译,然后用连接器把obj文件合成可执行文件。 bcc -c -ml -IC:\BCC\INCLUDE\ -LC:\BCC\LIB client.c
图灵狗 2013-01-04
  • 打赏
  • 举报
回复
不好意思,这些天有事情,耽误了你的时间。
引用 22 楼 silentwins 的回复:
谁能帮帮忙啊,感激不尽~
图灵狗 2013-01-04
  • 打赏
  • 举报
回复
我从网上下载和安装了DOS 6.22/Turbo C++ 3.0,虚拟机是Virtual Box: 1、解压MSTCPSDK到C:\MSTCPSDK目录 2、拷贝C:\MSTCPSDK\INCLUDE到C:\TC\INCLUDE 3、拷贝C:\MSTCPSDK\LIB到C:\TC\LIB 4、进入C:\MSTCPSDK\DSAMPLE目录 5、执行SET PATH=C:\TC\BIN命令 6、执行TCC -IC:\TC\INCLUDE\ -LC:\TC\LIB -ECLIENT CLIENT.C DOS_SOCK.LIB 这样就编译生成了CLIENT.EXE,集成环境的话,大概是需要把DOS_SOCK.LIB加入Project中,这部分没有试。
引用 22 楼 silentwins 的回复:
谁能帮帮忙啊,感激不尽~
silentwins 2012-12-30
  • 打赏
  • 举报
回复
谁能帮帮忙啊,感激不尽~
silentwins 2012-12-28
  • 打赏
  • 举报
回复
我这是DOS的啊,谢谢!
HayYoung 2012-12-28
  • 打赏
  • 举报
回复
信息太少,不过楼主肯定少加Ws2_32.lib进去。要在编译器里面设置进去才行。
赵4老师 2012-12-28
  • 打赏
  • 举报
回复
bc++3.1完整版http://download.csdn.net/source/2805028 要想在Windows环境下稳定运行bc.exe 建一个批处理bc.bat,内容为下面两行,放在bc.exe同目录下,再将bc.bat发送到桌面快捷方式: del tc*.swp >NUL start command /c bc.exe 如果想在IDE里面使用鼠标,还应将快捷方式属性中的快速编辑模式关掉。
silentwins 2012-12-28
  • 打赏
  • 举报
回复
折腾了一会,不明白borland c里面这个include files怎么是灰色的,网上也没有答案。
图灵狗 2012-12-28
  • 打赏
  • 举报
回复
记得需要在Project或者是Options选项下设置INCLUDE和LIB。
引用 6 楼 silentwins 的回复:
程序是在纯DOS下运行,DOS是必然需要的,编译器除了这个还有TC,但是传说TC彻底放弃后续支持的时候,MSTCPSDK还没发布出来。 1.C:\BORLANDC\INCLUDE和Z:\BORLANDC\LIB其实是在一起的啊,只不过我是在VM里面,映射出来的磁盘是Z:盘,手误啊,不好意思。兄台还真细心,谢谢! 2.我的Path值是PATH=C:\;C:\DOS;C:……
silentwins 2012-12-28
  • 打赏
  • 举报
回复
程序是在纯DOS下运行,DOS是必然需要的,编译器除了这个还有TC,但是传说TC彻底放弃后续支持的时候,MSTCPSDK还没发布出来。
1.C:\BORLANDC\INCLUDE和Z:\BORLANDC\LIB其实是在一起的啊,只不过我是在VM里面,映射出来的磁盘是Z:盘,手误啊,不好意思。兄台还真细心,谢谢!
2.我的Path值是PATH=C:\;C:\DOS;C:\Borlandc\bin;C:\NET,不需要把Include和Lib也加进去吧?
3.进去试了一下,还是不行。

图灵狗 2012-12-28
  • 打赏
  • 举报
回复
DOS 6.22和 Borland C 3.0实在是太古老了: 1、第一步中C:\BORLANDC\INCLUDE和Z:\BORLANDC\LIB的INCLUDE和LIB为何不在同一个硬盘分区? 2、从输出信息来看,几乎可以肯定是INCLUDE搜索路径找不到和LIB库文件无法链接的问题; 3、BCC client.c理论上来讲会从DOS的环境变量中搜索头文件,至于库文件需不需要显示指定就不是很清楚了。 所以,这里建议楼主: 1、重新安装Borland C 3.0,确保环境变量有配置好; 2、直接用Borland C 3.0集成环境建立Project,然后添加你的client.c进行编译和调试。
silentwins 2012-12-28
  • 打赏
  • 举报
回复
我是直接拿过来的镜像,太大、升级成VM8、还带自有网卡的DOS驱动,直接给你不知道能不能用,不过有可以安装的DOS。能编译程序就好了,毕竟要运行起来,安装网卡的驱动,还要运行驱动里面的sockets.exe才能正常通讯的。 DOS 6.22: http://download.csdn.net/detail/silentwins/4939104 Borland C 3.1 http://download.csdn.net/detail/silentwins/4939119 Turbo C 2 http://download.csdn.net/detail/silentwins/4939141 最好Borland C能编译通过了……
图灵狗 2012-12-28
  • 打赏
  • 举报
回复
没有环境啊,把你的DOS和TC镜像都提供一下吧。
引用 19 楼 silentwins 的回复:
引用 17 楼 turingo 的回复:在Options里面设置,内存不足应该是你的编译模式设置的太小,可以设置大一些。 引用 13 楼 silentwins 的回复:引用 11 楼 turingo 的回复:这确实很奇怪!如果是纯C语言的话,要不换个Turbo C2.0试试看看。 引用 6 楼 silentwins 的回复:程序是在纯DOS下运行,DOS是必然……
silentwins 2012-12-28
  • 打赏
  • 举报
回复
引用 17 楼 turingo 的回复:
在Options里面设置,内存不足应该是你的编译模式设置的太小,可以设置大一些。 引用 13 楼 silentwins 的回复:引用 11 楼 turingo 的回复:这确实很奇怪!如果是纯C语言的话,要不换个Turbo C2.0试试看看。 引用 6 楼 silentwins 的回复:程序是在纯DOS下运行,DOS是必然需要的,编译器除了这个还有TC,但是传说……
设置了也是内存不足,奇怪了。 言归正传,有木有大侠把Sample下载下来帮忙编译一下,Sample在顶楼有提供链接的啊,谢谢了!
silentwins 2012-12-28
  • 打赏
  • 举报
回复
引用 15 楼 zhao4zhong1 的回复:
下载我9#给出的链接BC++3.1完整版安装再试试看?
还是一样啊...我本来的也是完整版。
图灵狗 2012-12-28
  • 打赏
  • 举报
回复
在Options里面设置,内存不足应该是你的编译模式设置的太小,可以设置大一些。
引用 13 楼 silentwins 的回复:
引用 11 楼 turingo 的回复:这确实很奇怪!如果是纯C语言的话,要不换个Turbo C2.0试试看看。 引用 6 楼 silentwins 的回复:程序是在纯DOS下运行,DOS是必然需要的,编译器除了这个还有TC,但是传说TC彻底放弃后续支持的时候,MSTCPSDK还没发布出来。 1.C:\BORLANDC\INCLUDE和Z:\BORLANDC\LI……
赵4老师 2012-12-28
  • 打赏
  • 举报
回复
Options、Directories……、Directories对话框中填写Include Directories和Library Directories,多项之间用半角分号隔开。
加载更多回复(8)

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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