V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
czwstc
V2EX  ›  程序员

送钱改写一个 MFC 程序,大华示例程序提取一功能。

  •  1
     
  •   czwstc · 2020-03-15 01:12:20 +08:00 · 3873 次点击
    这是一个创建于 1723 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大华的 SDK 看得我快吐了。求老哥帮助。

    不白嫖。暂定 400 块。

    大华的 MFC 示例程序,已有功能:登陆,查询客流量

    功能流程:登陆——查询昨日数据——保存入 mysql。

    目的是为了定时将数据(昨日人流进出)存入数据库。

    所以改写成 C++最好。或者 MFC 改一下,仅仅查昨日数据,然后保存入 mysql 也可以。

    可以外部或者内部都行。

    Scre1.png

    参考:

    联系方式:tg:zweic wx:Zeichan

    25 条回复    2020-03-17 05:34:18 +08:00
    Barrydahua
        1
    Barrydahua  
       2020-03-15 01:18:41 +08:00
    hahaha,大华的 SDK 能用 /?
    czwstc
        2
    czwstc  
    OP
       2020-03-15 01:22:52 +08:00
    @Barrydahua /dog 我觉得,大华的人写的时候一定非常牛逼吧。
    SpencerCJH
        3
    SpencerCJH  
       2020-03-15 02:44:36 +08:00
    好有年代感的样子....
    czwstc
        4
    czwstc  
    OP
       2020-03-15 03:53:28 +08:00 via iPhone
    @SpencerCJH 文档里推荐环境:vs2005
    levelworm
        5
    levelworm  
       2020-03-15 08:21:17 +08:00
    本文中的所有示例代码仅在 Windows7 操作系统下 VC++6.0 测试过。
    看我的颤抖。。。
    levelworm
        6
    levelworm  
       2020-03-15 08:23:25 +08:00
    话说运行时报错报的是什么?懒得装 VC 6.0 试了。。。
    levelworm
        7
    levelworm  
       2020-03-15 08:31:25 +08:00   ❤️ 1
    正在链接...
    main.obj : error LNK2019: 无法解析的外部符号 __imp__CLIENT_GetLastError@0,该符号在函数 "void __cdecl InitTest(void)" (?InitTest@@YAXXZ) 中被引用
    main.obj : error LNK2019: 无法解析的外部符号 __imp__CLIENT_LoginEx2@32,该符号在函数 "void __cdecl InitTest(void)" (?InitTest@@YAXXZ) 中被引用
    main.obj : error LNK2019: 无法解析的外部符号 __imp__CLIENT_SetAutoReconnect@8,该符号在函数 "void __cdecl InitTest(void)" (?InitTest@@YAXXZ) 中被引用
    main.obj : error LNK2019: 无法解析的外部符号 __imp__CLIENT_Init@8,该符号在函数 "void __cdecl InitTest(void)" (?InitTest@@YAXXZ) 中被引用
    main.obj : error LNK2019: 无法解析的外部符号 __imp__CLIENT_Cleanup@0,该符号在函数 "void __cdecl EndTest(void)" (?EndTest@@YAXXZ) 中被引用
    main.obj : error LNK2019: 无法解析的外部符号 __imp__CLIENT_Logout@4,该符号在函数 "void __cdecl EndTest(void)" (?EndTest@@YAXXZ) 中被引用
    C:\Users\Administrator\Documents\Visual Studio 2005\Projects\fix\Debug\fix.exe : fatal error LNK1120: 6 个无法解析的外部命令

    好奇一把,VS Studio 的 lib 都设置好了么?感觉是没找到这些 SDK 里头的函数啊。不过我水平有限。。。
    levelworm
        8
    levelworm  
       2020-03-15 08:37:50 +08:00
    啊我弄错了,那个客流量才是你的程序吧
    ybw
        9
    ybw  
       2020-03-15 09:58:50 +08:00 via Android
    800
    tairan2006
        10
    tairan2006  
       2020-03-15 09:59:27 +08:00 via Android
    这也太古老了
    augustheart
        11
    augustheart  
       2020-03-15 11:43:57 +08:00
    如果能符号确定存在的话,基本上就是出在 dllexport 和 dllimport 的定义上了
    augustheart
        12
    augustheart  
       2020-03-15 11:45:48 +08:00
    @augustheart 呃,上面说的是 7 楼的报错
    czwstc
        13
    czwstc  
    OP
       2020-03-15 11:47:37 +08:00
    @levelworm 对的,这个代码我照着文档里抄的,就报错了。客流量是给的官方,我随手拖了拖按钮。
    mclxly
        14
    mclxly  
       2020-03-15 12:46:06 +08:00   ❤️ 1
    看错误信息好像是编译时没有找到对应的 lib, 没环境懒得实操
    czwstc
        15
    czwstc  
    OP
       2020-03-15 12:53:59 +08:00
    @levelworm 发现了,似乎 lib 是 64 位的。改 换 32 位 sdk 的 lib 和 dll 好像可以运行。
    augustheart
        16
    augustheart  
       2020-03-15 14:06:46 +08:00   ❤️ 1
    试着编译了一下,vs19 下面直接转换直接就过了
    augustheart
        17
    augustheart  
       2020-03-15 14:09:28 +08:00   ❤️ 1
    粗看了一下,楼主要的东西应该就在
    BOOL CHistoryQuery::StartFindNumberState(int nChannel, int nType)

    int CHistoryQuery::DoFindNumberStarteEx(int nBegin, int nSearchCount)
    里面
    不过,其实我根本没搞清楚楼主要啥
    (“看起来很简单”,键盘党发出了轻而易举的声音)
    ……逃
    yngzij
        18
    yngzij  
       2020-03-15 18:46:12 +08:00
    可惜手里没有 windows 摊手
    czwstc
        19
    czwstc  
    OP
       2020-03-15 19:38:32 +08:00
    Update 一下进展:
    傻逼在 vs2005 很多错不会报。我换成了 vs2017,然后就报了 lib 是 64 位的,我调试的 32 位的。
    改成 32 位之后,成功登陆。
    StartFindNumberState 查询这部分的代码:
    居然有错别字。。



    然后,我死活没找到 sdk 里哪里说了输出的语句( CLIENT_StartFindNumberStat )怎么写。



    研究中
    jeffw
        20
    jeffw  
       2020-03-15 21:52:39 +08:00
    @czwstc CLIENT_StartFindNumberStat 输出的是返回值,返回值是查询句柄,然后把查询句柄传入 CLIENT_DoFindNumberStat 函数进行查询,我不知道哪里错的不对,调用 CLIENT_DoFindNumberStat 后,就自动断线了,CLIENT_DoFindNumberStat 返回-1。 调用 CLIENT_GetLastError 返回的错误码是 0x80000002,即 NET_NETWORK_ERROR,查文档,意思是“网络错误,可能因为网络超时”,卡在这个问题上 2 个小时没解决,最后没办法只能改厂家 demo 了。
    czwstc
        21
    czwstc  
    OP
       2020-03-15 22:28:50 +08:00
    此帖终结:大佬 @jeffw 解决了。虽然遇到 sdk 瞎几把注释,文档各种不全的情况下。直接修改厂家的 MFC domo,然后把功能加出来了。
    数据可视化之拿数据之殇。
    32
        22
    32  
       2020-03-16 11:19:36 +08:00
    @levelworm 我被 __imp__CLIENT_LoginEx2@32 @出来了🤣
    gfanny
        23
    gfanny  
       2020-03-16 13:52:53 +08:00
    用过大华 SDK,MFC 的程序只能用 VS2005,内部就是用这个版本的。还不能换
    czwstc
        24
    czwstc  
    OP
       2020-03-16 20:55:55 +08:00
    @32 emmm 6
    levelworm
        25
    levelworm  
       2020-03-17 05:34:18 +08:00
    @32 23333333
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2594 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 00:25 · PVG 08:25 · LAX 16:25 · JFK 19:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.