开发者社区> 问答> 正文

请问HPSocket组件,能够在VC6中使用吗? 400 报错

请问HPSocket组件,能够在VC6中使用吗? 400 报错

大侠,您好!

我按照实例“TestEcho-4C”(这个例子,就是使用DLL的),进行到VC6中移植,不成功。编译出错。请问能够在VC6中使用您的这个组件吗?如果可以的话,请指导。最好有一个VC6下的实例,谢谢!如有空请回复。

提示错误:HPSocket4C.dll : fatal error LNK1136: invalid or corrupt file

展开
收起
爱吃鱼的程序员 2020-06-04 11:54:01 650 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    那是不可能的,你检查一下自己的回调方法,要是定义不正确它可能会调用了基类的事件处理方法了。


    ######要编译的话VC6可能有问题吧,起码也得2005。直接用提供的DLL就好了嘛~######谢谢!只能使用HPSocket4C_U.dll,就可以了。######

    C++下使用HPSocket.dll 更方便,已经提供好Wrapper类了。

    ######

    引用来自“伤神小怪兽”的答案

    C++下使用HPSocket.dll 更方便,已经提供好Wrapper类了。

    看了你的回复,我 今天又采用了此方法。VC6下测试时,却发现了两个问题:OnPrepareListen(SOCKET soListen)与OnAccept(CONNID dwConnID, SOCKET soClient)函数,似乎没有回调,不知道为什么?请指导.测试,发现此方法比用HPSocket4C.dll的纯C函数,效率高多了。
    ######

    引用来自“伤神小怪兽”的答案

    那是不可能的,你检查一下自己的回调方法,要是定义不正确它可能会调用了基类的事件处理方法了。

    原因已经找到:

    VC10中
    typedef UINT_PTR        SOCKET;
    typedef _W64 unsigned int UINT_PTR, *PUINT_PTR;
    而VC6中:

    typedef u_int           SOCKET;
    typedef unsigned int    u_int;

    似乎定义没有问题,编译也没有提示任何错误与警告,但是就是这两个函数没有回调。

    最后在VC6中的定义,把SOCKET用UINT_PTR代替就可以了,那两个函数就可以正常回调了。

    ######

    引用来自“ah_thunder”的答案

    引用来自“伤神小怪兽”的答案

    那是不可能的,你检查一下自己的回调方法,要是定义不正确它可能会调用了基类的事件处理方法了。

    原因已经找到:

    VC10中
    typedef UINT_PTR        SOCKET;
    typedef _W64 unsigned int UINT_PTR, *PUINT_PTR;
    而VC6中:

    typedef u_int           SOCKET;
    typedef unsigned int    u_int;

    似乎定义没有问题,编译也没有提示任何错误与警告,但是就是这两个函数没有回调。

    最后在VC6中的定义,把SOCKET用UINT_PTR代替就可以了,那两个函数就可以正常回调了。

    解决了就好。
    2020-06-04 16:48:09
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载