求助,QT与MFC混合编程

舒泱 2020-06-24 03:16:58
我用的QT做的界面,别人用的MFC写的函数并且导出成了动态链接库,我的QT程序里需要调用这些函数。我拿到了.dll、.lib、.h文件,隐式调用动态链接库的条件齐了。
问题来了,我打开.h文件的时候,发现别人写的函数声明形参列表里,使用了CArray<CString, CString>,查了一下,CArray、CString是MFC里的类,我在QT里编译通不过,QT识别不了这个类。(我只用过QT,没有用过MFC)

尝试过的解决方法:
(1)找到CArray所在的头文件然后在QT程序里包含,#include <afxtempl.h>,但QT表示找不到文件afxtempl.h。那我可以去把afxtempl.h下载下来再包含进我的QT工程吗,这样我就可以在QT中使用CArray了?


或者有没有其他方法能解决这个问题?
...全文
320 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
舒泱 2020-06-28
  • 打赏
  • 举报
回复
引用 8 楼 丁劲犇 的回复:
这个很麻烦。
嗯嗯,已经让供应商那边改接口了
  • 打赏
  • 举报
回复
这个很麻烦。
舒泱 2020-06-24
  • 打赏
  • 举报
回复
引用 6 楼 走好每一步 的回复:
[quote=引用 5 楼 舒泱 的回复:] [quote=引用 4 楼 走好每一步 的回复:] [quote=引用 3 楼 舒泱 的回复:] [quote=引用 1 楼 走好每一步 的回复:] QT本身就有获取所有网络名称的办法,干嘛使用MFC的动态库。。。
导师找外面公司做的那块软件,公司交付过来的是MFC导出的动态库,如果他们用QT搞的,就不会有这些麻烦了[/quote] 解决办法1:让你们的供应商交付的动态库改成纯C++标准库的接口 CString改成std::string CArray改成vector 解决办法2:你自己懂MFC,自己封装一层再给QT用 很少有人动态库这样去依赖MFC的,除非确认客户也是使用MFC[/quote] 俺觉得你说得有道理,作为甲方就应该让他们把动态库改了明明签合同的时候说了支持QT调用的[/quote] 觉得有道理没有用的, 第一:尝试去沟通,让供应商改成导出的接口不依赖MFC,只依赖标准库 第二:沟通失败,就只能自己把MFC的动态库封装成标准库的接口, 我已经刚试验了,这条路可行,用的是VS + QT,但是很麻烦,不太建议自己去整。[/quote] 谢谢,已经在跟那边沟通了,希望他们能答应修改接口,希望我能顺利毕业。
走好每一步 2020-06-24
  • 打赏
  • 举报
回复
引用 5 楼 舒泱 的回复:
[quote=引用 4 楼 走好每一步 的回复:] [quote=引用 3 楼 舒泱 的回复:] [quote=引用 1 楼 走好每一步 的回复:] QT本身就有获取所有网络名称的办法,干嘛使用MFC的动态库。。。
导师找外面公司做的那块软件,公司交付过来的是MFC导出的动态库,如果他们用QT搞的,就不会有这些麻烦了[/quote] 解决办法1:让你们的供应商交付的动态库改成纯C++标准库的接口 CString改成std::string CArray改成vector 解决办法2:你自己懂MFC,自己封装一层再给QT用 很少有人动态库这样去依赖MFC的,除非确认客户也是使用MFC[/quote] 俺觉得你说得有道理,作为甲方就应该让他们把动态库改了明明签合同的时候说了支持QT调用的[/quote] 觉得有道理没有用的, 第一:尝试去沟通,让供应商改成导出的接口不依赖MFC,只依赖标准库 第二:沟通失败,就只能自己把MFC的动态库封装成标准库的接口, 我已经刚试验了,这条路可行,用的是VS + QT,但是很麻烦,不太建议自己去整。
舒泱 2020-06-24
  • 打赏
  • 举报
回复
引用 4 楼 走好每一步 的回复:
[quote=引用 3 楼 舒泱 的回复:] [quote=引用 1 楼 走好每一步 的回复:] QT本身就有获取所有网络名称的办法,干嘛使用MFC的动态库。。。
导师找外面公司做的那块软件,公司交付过来的是MFC导出的动态库,如果他们用QT搞的,就不会有这些麻烦了[/quote] 解决办法1:让你们的供应商交付的动态库改成纯C++标准库的接口 CString改成std::string CArray改成vector 解决办法2:你自己懂MFC,自己封装一层再给QT用 很少有人动态库这样去依赖MFC的,除非确认客户也是使用MFC[/quote] 俺觉得你说得有道理,作为甲方就应该让他们把动态库改了明明签合同的时候说了支持QT调用的
走好每一步 2020-06-24
  • 打赏
  • 举报
回复
引用 3 楼 舒泱 的回复:
[quote=引用 1 楼 走好每一步 的回复:] QT本身就有获取所有网络名称的办法,干嘛使用MFC的动态库。。。
导师找外面公司做的那块软件,公司交付过来的是MFC导出的动态库,如果他们用QT搞的,就不会有这些麻烦了[/quote] 解决办法1:让你们的供应商交付的动态库改成纯C++标准库的接口 CString改成std::string CArray改成vector 解决办法2:你自己懂MFC,自己封装一层再给QT用 很少有人动态库这样去依赖MFC的,除非确认客户也是使用MFC
舒泱 2020-06-24
  • 打赏
  • 举报
回复
引用 1 楼 走好每一步 的回复:
QT本身就有获取所有网络名称的办法,干嘛使用MFC的动态库。。。
导师找外面公司做的那块软件,公司交付过来的是MFC导出的动态库,如果他们用QT搞的,就不会有这些麻烦了
走好每一步 2020-06-24
  • 打赏
  • 举报
回复
QT本身就有获取所有网络名称的办法,干嘛使用MFC的动态库。。。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧