返回信息流要求在主框架中通过一个按钮调用动库,动库中实现用Socket发送数据(服务器端),发送数据要求用一个对话框显示发送数据,再用另一个工程做接收数据(客户端),同样用对话框显示接收到的数据。
但发现在DLL中使用Socket时,Socket的那些函数,比如Create,Bind,Accept,Listen,Send,Receive等,返回的都是表示失败的值(使用的是有连接的方式),我在建DLL时选的扩展类的DLL,同时选中了Windows Socket选项。也就是说,现在调用DLL时,可以显示发送的数据,但发送失败。若不用DLL,已经收发数据正常。
问
1.怎样在扩展DLL中支持Socket,或者可能是别的什么问题?
2.若使用常规动态链接的DLL,怎样实现?
我用常规动态链接的DLL试过了,但不能通过调用DLL弹出显示发送数据的对话框。我在DLL中是先建立了个静态资源的对话框,然后为其建立了个新类CServerDlg,此类以public的方式继承了类CDialog,又实例化了个对象,CServerDlg serverdlg,然后serverdlg.DoModal()。使用这种方法在常规动态链接的DLL中当serverdlg.DoModal() 时,弹出对话框提示出错;但在扩展DLL中正常。我不明白这是为什么?
3.常规DLL和扩展DLL有什么区别?
请知道的同学解答下,我不胜感激!
这是一条镜像帖。来源:北邮人论坛 / cpp / #8511同步于 2008/6/16
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
【求助】扩展dll下怎么不能用Socket吗?
winterday
2008/6/16镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
扩展 DLL 是使用 MFC 动态链接库版本(也称作共享 MFC 版本)生成的。只有用共享 MFC 版本生成的 MFC 可执行文件(应用程序或规则 DLL)才能使用扩展 DLL。
而常规DLL则是任何程序均可使用
使用常规dll实现非常简单,直接把dll中的函数导出,然后声明函数指针进行调用
我没用扩展dll写过socket的东西,不过常规dll实现起来不会遇到你说的问题
谢谢,现在可以了,但是我不知道为什么就可以了,我又把DLL重新写了一遍,也不知道跟原来的哪里不一样了。
不过好像还是有点问题呀,主框架上调动库的按钮第二次按时就报错了!而且运行时是先把主框架运行起来,然后按按钮调动库,但按了后没有任何反应,然后运行客户端的工程,这样动库里的东西就自己运行了,就能看到收发的数据了。感觉有点怪。