linux下qt能否利用vc生成的动态链接库

[复制链接]
查看11 | 回复7 | 2021-1-27 07:08:09 | 显示全部楼层 |阅读模式
本人以前用vc开发程序,积累了很多程序代码,现在转到linux下的qt开发,想知道以前用vc编写的类生成dll之后能否被qt调用?
分 -->
回复

使用道具 举报

千问 | 2021-1-27 07:08:09 | 显示全部楼层
我也想知道mark
回复

使用道具 举报

千问 | 2021-1-27 07:08:09 | 显示全部楼层
明显不能,DLL和EXE是一个道理,如果可以,那EXE就都跑LINUX下运行去了,系统不一样,除了解释性的语言,这种DLL,EXE是不可能跨平台的
回复

使用道具 举报

千问 | 2021-1-27 07:08:09 | 显示全部楼层
楼主积累了好多代码了,这点常识应该有的吧,你用VC编写的程序,不光是2进制级别的不能共用,连代码都不能共用,除非你的代码里面,完全没有系统API,都是些标准的C++的东西,例如算法,数据结构,只要有系统API的东西,例如查找文件,这种都是特定的操作系统才有的东西,换个操作系统,完全不一样,也就完全没法用了。
回复

使用道具 举报

千问 | 2021-1-27 07:08:09 | 显示全部楼层
就算是windows,VC编译的dll,mingw也用不了。
很明显,这就是Qt的优势,代码可以拿到另外一个平台直接编译。
回复

使用道具 举报

千问 | 2021-1-27 07:08:09 | 显示全部楼层
我对这个问题的解释是,YESandNO
有一点你需要注意的是COM和标准DLL定义的都是调用的规则。用英语讲就是binary-interfacestandard。也就是说你只要符合这个标准,是无所谓在什么平台下的。更直接的,你可以有一个Linux下的COM和DLL
但是现实是,这样的事情很难做到。这个和编译器的ABI无关。因为规则已经定了。主要的原因是DLL和COM的依赖关系。每一个DLL都不是单独存在的。所以,当你追跟溯源构建出所有的DLL和COM的依赖关系时,你会发现,已经有很多人这么做了。(类似,但不能完全等同)
Linux上的DLL构建很大程度上你可以参考WINE
Windows上的so你可以看看Cygwin
回复

使用道具 举报

千问 | 2021-1-27 07:08:09 | 显示全部楼层
这句话是明显不对的,大致可以理解为VC++的导出DLL格式有标准DLL(ATLblah...)还有VC++的扩展DLL,标准DLL你调用是没有任何问题的。不论是mingw还是Delphi甚至是VB。VC++扩展的DLL就不行了,这个特地跟你的编译器有关。
引用4楼jdwx1的回复:就算是windows,VC编译的dll,mingw也用不了。
很明显,这就是Qt的优势,代码可以拿到另外一个平台直接编译。

回复

使用道具 举报

千问 | 2021-1-27 07:08:09 | 显示全部楼层
什么是标准的DLL格式?C++没有ABI标准,不同编译器不保证实现一致,dll级别的一般是不行的,有源码用qt重新编译dll不就可以使用?
至于4楼说的是源码级别,和ABI不是一回事!
引用6楼dext的回复:这句话是明显不对的,大致可以理解为VC++的导出DLL格式有标准DLL(ATLblah...)还有VC++的扩展DLL,标准DLL你调用是没有任何问题的。不论是mingw还是Delphi甚至是VB。VC++扩展的DLL就不行了,这个特地跟你的编译器有关。
引用4楼jdwx1的回复:就算是windows,VC编译的dll,mingw也用……
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行