前段时间,脱离webrtc的demo,开始自写webrtc程序,现将遇到的一些问题一一列出:
(1)在执行AsyncSocket::Connect函数后无法触发定义的AsyncSocket对象绑定的处理函数OnConnect:
问题:没有在进程中处理windows消息路由,导致系统无法将消息队列中的新的消息分发给进程中对应的线程,所以无法触发OnConnect回调,因此需要在winmain()中做类似操作
while ((gm = ::GetMessage(&msg, NULL, 0, 0)) != 0 && gm != -1)
{
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
这样,AsyncSocket::Connect调用才会触发当前AsyncSocket对象绑定的回调函数。
-------------------------------------------------------------------------------------------------------------------
自从上次将ninja编译的webrtc工程修改为vs2015编译的webrtc项目后,出现了很多的未知错误,现在就将刚刚遇到的一些问题做一些描述。
修改为vs2015编译的项目后,发现项目vcxproj文件中的内容和vs2015项目属性中显示的属性不相同,结果导致项目编译的时候出了问题也一时无法找到问题,原因不清楚,既然vcxproj中的内容和vs2015项目属性窗口中显示的内容不相同,那么就直接修改vcxproj文件吧!比如一个例子,当前的项目是console工程,在release模式下调试发现报错LIBCMT.lib中的错误,并提示“WinMain”函数是不可解析的外部符号,这是明显的lib文件未导入到工程中的问题,但是实际上并不是这样,原因是本工程明明是console工程但是,在其vcxproj文件中的<SubSystem></SubSystem>标签中确实Windows,虽然在vs2015的项目属性窗口中明明显示此项是“console”,但是vcxproj中的属性却是不一样,解决方案:直接将windows改为console即可!