Qt Creator 开发C++程序,如何添加链接一个C语言的dll

王桑的一天 2019-12-18 11:08:32
我在Qt Creator 里写了一段C++程序调用 C 语言的 dll

如果在 Qt Creator 里构建,会报错提示:
undefined reference to `xxxx'
提示找不到函数

如果我在命令行编译:
g++ main.cpp -o a.exe func.dll

这样就OK

那么我如何在Qt Creator 也能编译成功 ?
...全文
174 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
王桑的一天 2019-12-19
  • 打赏
  • 举报
回复
引用 3 楼 这是一个正经昵称 的回复:
INCLUDEPATH += $$PWD/SDL/include
LIBS += $$PWD/SDL/lib/libSDL.dll.a \
.pro有加类似这种吧?然后C++调C库,库头文件有 #ifdef __cplusplus extern "C"{ }#endif 这种东西吧?
按照你的提示,可以了,谢谢!
  • 打赏
  • 举报
回复
INCLUDEPATH += $$PWD/SDL/include
LIBS += $$PWD/SDL/lib/libSDL.dll.a \
.pro有加类似这种吧?然后C++调C库,库头文件有 #ifdef __cplusplus extern "C"{ }#endif 这种东西吧?
王桑的一天 2019-12-18
  • 打赏
  • 举报
回复
引用 1 楼 这是一个正经昵称 的回复:
在Qt Creator编译输出里是g++ main.cpp -o a.exe func.dll吗?我的好像没什么问题,是否可以通过改构建步骤来处理?
不是,要怎么改呢?我就是想加上 func.dll D:/Qt/Qt5.12.1/Tools/mingw730_64/bin/mingw32-make -f Makefile.Debug mingw32-make[1]: Entering directory 'C:/Users/Andy/Documents/build-fft-Desktop_Qt_5_12_1_MinGW_64_bit-Debug' g++ -Wl,-subsystem,console -mthreads -o debug\fft.exe debug/main.o
  • 打赏
  • 举报
回复
在Qt Creator编译输出里是g++ main.cpp -o a.exe func.dll吗?我的好像没什么问题,是否可以通过改构建步骤来处理?
简介   MinGW是指只用自由软件来生成纯粹的Win32可执行文件的编译环 境,它是Minimalist GNU on Windows的略称。这里的“纯粹”是指「使用msvcrt.dll的应用程序」。无法使用MFC (Microsoft Foundation Classes微软基础类库)。   注:msvcrt.dll(名称:Microsoft C Runtime Library)提供了printf,malloc,strcpy等C语言库函数,并且为使用C/C++(Vc)编绎的程序提供了初始化(如获取命令行参数)以及退出等功能. 编辑本段概念   MinGW:一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你生成本地的Windows程序而不需要第三方C运行时库。   MinGW,即 Minimalist GNU For Windows。它是一些头文件和端口库的集合,该集合允许人们在没有第三方动态链接库的情况下使用 GCC 产生 Windows32 程序。   在基本层,MinGW 是一组包含文件和端口库,其功能是允许控制台模式的程序使用微软的标准C运行时间库(MSVCRT.DLL),该库在所有的 NT OS 上有效,在所有的 Windows 95 发行版以上的 Windows OS 有效,使用基本运行时间,你可以使用 GCC 写控制台模式的符合美国标准化组织(ANSI)程序,可以使用微软提供的 C 运行时间扩展。该功能是 Windows32 API 不具备的。下一个组成部分是 w32api 包,它是一组可以使用 Windows32 API 的包含文件和端口库。与基本运行时间相结合,就可以有充分的权利既使用 CRT(C Runtime)又使用 Windows32 API 功能。 编辑本段mingw工具集合   实际上 MinGW 并不是一个 单纯的C/C++ 编译器,而是一套 GNU 工具集合。除开 GCC 以外,MinGW 还包含有一些其他的 GNU 程序开发工具 (比如 gawk bison 等等)。   开发 MinGW 是为了那些不喜欢工作在 Linux(FreeBSD) 操作系统而留在 Windows 的人提供一套符合 GNU 的 GNU 工作环境。   所以,使用 MinGW 我们就可以像在 Linux 下一样使用 GNU 程序开发工具。   GCC 就是 MinGW 的核心所在,GCC 是一套支持众多计算机程序语言的编译系统,而且在语言标准的实现上是最接近于标准的。并且 GCC 几乎可以移植到目前所有可用的计算机平台。(我的电脑上就还装有 DevKitPro,里面包含 GCC 的 ARM(for GBA/DS/GP32) 和 MIPS(for PSP) 版本。)   GCC 本身不像 VC 那样拥有IDE 界面(在 Windows 上也存在 Dev C++ 之类的支持 MinGW 编译器的 IDE)。源代码编辑你可以选用任何你喜欢的文本编辑器(据说微软的开发人员包括 VC 的开发都不用 VC 所带的 IDE 编辑器,而是选用 GNU 的 VIM 编辑器)。然后使用 make 等工具来进行软件项目的编译、链接、打包乃至发布。而像 cvs(svn) 源代码版本控制工具可以让世界上任何一个角落的人都可以参与到软件项目中来。   关于 MFC,微软基础库类,这个随 VC++ 携带的一个源代码公开的开发包,和其他 Windows 程序开发包是一样的。如果有 VC++ 的授权,你完全可以使用 MFC 的源代码,也就是你使用 GCC 来编译 MFC 程序是完全可以的。   当然,GNU 下也很多 Windows 程序开发包,甚至有一些是支持跨平台使用的。不仅仅可以直接把源代码编译为 Windows 程序,也可以不经修改编译为其他操作系统的图形程序。   不过 GNU 下,最流行的图形界面开发库是 GTK+与Qt。GTK+ 与Qt均提供跨平台支持。例如qt支持windows、linux、mac os x、windows CE、symbian、meego等操作系统平台,并且提供了Qt SDK(包含Qt creator集成开发环境)。Gtk也能很好的运行在 Windows 平台(比如 GIMP 和 Gaim)。   总体说来,使用 MinGW 就是 GNU。

16,212

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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