当前位置: 代码迷 >> C语言 >> Microsoft TCP SDK sample的编译有关问题
  详细解决方案

Microsoft TCP SDK sample的编译有关问题

热度:8285   发布时间:2013-02-26 00:00:00.0
Microsoft TCP SDK sample的编译问题
系统: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的时候,点了一下发表帖子,很慢,再点一下预览,更慢,又点了一下发表帖子,直接找不到网页了,后退内容也找不见了,楼主气愤愤活生生地又重打了一遍帖子。谢谢了!

------解决方案--------------------------------------------------------
还是有些lib你没加进来,把所有的lib都放进来试试
------解决方案--------------------------------------------------------
沒用過Borland C 3.0,
環境是不是還有什麽地方要設置,讓Link知道要連接你拷貝的MSTCPSDK\LIB裏面的庫
------解决方案--------------------------------------------------------
信息太少,不过楼主肯定少加Ws2_32.lib进去。要在编译器里面设置进去才行。
------解决方案--------------------------------------------------------
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进行编译和调试。
------解决方案--------------------------------------------------------
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里面使用鼠标,还应将快捷方式属性中的快速编辑模式关掉。

------解决方案--------------------------------------------------------
为啥一定要在BC下编译?
  相关解决方案