今天尝试用enet 来改写vnc的服务端,使其传输协议由原来的TCP协议,改成UDP协议.
编译没有什么问题,但是在link时又出现了问题.如下所示:
host.obj : error LNK2019: 无法解析的外部符号 __imp__htonl@4,该符号在函数 _enet_host_connect 中被引用
win32.obj : error LNK2019: 无法解析的外部符号 __imp__setsockopt@20,该符号在函数 _enet_socket_create 中被引用
win32.obj : error LNK2019: 无法解析的外部符号 __imp__ioctlsocket@12,该符号在函数 _enet_socket_create 中被引用
。。。。。。。。。。。。。。。。。

win32.obj : error LNK2019: 无法解析的外部符号 __imp__WSARecvFrom@36,该符号在函数 _enet_socket_receive 中被引用
win32.obj : error LNK2019: 无法解析的外部符号 ___WSAFDIsSet@8,该符号在函数 _enet_socket_wait 中被引用
win32.obj : error LNK2019: 无法解析的外部符号 __imp__select@20,该符号在函数 _enet_socket_wait 中被引用
.\Release\enet.dll : fatal error LNK1120: 26 个无法解析的外部命令
生成日志保存在“file://c:\Documents and Settings\juwen\桌面\UltraVNC\winvnc\enet\Release\BuildLog.htm”
enet - 33 个错误,0 个警告
------ 已启动生成: 项目: authSSP, 配置: Release Win32 ------
Create Buildtime for VERSIONINFO
buildtime.in
正在编译资源...
正在链接...
正在创建库 .\..\..\Release/authSSP.lib 和对象 .\..\..\Release/authSSP.exp
正在嵌入清单...
生成日志保存在“file://c:\Documents and Settings\juwen\桌面\UltraVNC\winvnc\Release\BuildLog.htm”
authSSP - 0 个错误,0 个警告
------ 已启动生成: 项目: winvnc, 配置: Release Win32 ------
正在执行预链接事件...
buildtime.cpp
正在链接...
enet.lib(win32.obj) : error LNK2019: 无法解析的外部符号 __imp__WSASendTo@36,该符号在函数 _enet_socket_send 中被引用
enet.lib(win32.obj) : error LNK2019: 无法解析的外部符号 __imp__WSARecvFrom@36,该符号在函数 _enet_socket_receive 中被引用
.\..\Release/winvnc.exe : fatal error LNK1120: 2 个无法解析的外部命令

其中__imq__WSASendTo@36这类的问题是由于没有加载需要用到的库文件所引起的,解决方法可以在 文件里加入
#i nclude 
#pragma comment(lib,"ws2_32.lib")
或者
Project->Settings->Link标签->Object/Library Moduls: 后面添加 ws2_32.lib 

加入后问题解决了一些.出现错误如下:
win32.obj : error LNK2019: 无法解析的外部符号 __imp__timeBeginPeriod@4,该符号在函数 _enet_initialize 中被引用
win32.obj : error LNK2019: 无法解析的外部符号 __imp__timeEndPeriod@4,该符号在函数 _enet_deinitialize 中被引用
win32.obj : error LNK2019: 无法解析的外部符号 __imp__timeGetTime@0,该符号在函数 _enet_time_get 中被引用
.\Release\enet.dll : fatal error LNK1120: 3 个无法解析的外部命令

只要是几个时间函数的问题,我猜需要加入另外的库.上网找了一下.果然不出所料,往文件中加入
#pragma comment( lib, "winmm" )
或者
Project->Settings->Link标签->Object/Library Moduls: 后面添加 winmm.lib


OK了,又花了好长时间解决一个简单的问题!郁闷!