别再对着教程发懵了!手把手教你用Proteus 8.9搭建51单片机最小系统(附常用元件库清单)
2026/6/7 5:50:28
这里根据需求,设计一个自动化设备控制的项目框架:
- 主窗体框架包括侧边栏、顶部信息条等内容
- 副窗体框架使用模块化封装成dll动态库,动态调用在主窗体的右侧大部分区域显示。
这里我们使用Qt的子项目功能来创建,按照思路,先创建主项目,然后依次添加子项目,这里暂时先使用2个dll动态库加载方案来搭建框架
创建主项目的时候,我们可以使用“新建项目”中的 Non-Qt Project来创建,然后把main.c文件删掉就好了。
只保留一个.pro文件即可,内容按如下编辑(SUBDIRS后的子项目是在创建子项目时自动生成)。
TEMPLATE=subdirs SUBDIRS=\ui-project\dll-project\dll2-project
创建子项目之后,都可以移除原来自动生成的.h和.cpp文件,然后根据自己需要自行添加即可。
最后,完整的项目结构如下,就可以形成一个主项目包含多个子项目的Qt项目了。
# ui-project/ui-project.proQT+=widgets core TEMPLATE=app CONFIG+=c++11# 输出配置TARGET=DllCaller DESTDIR=$$PWD/../bin SOURCES+=\mainwindow.cpp\main.cpp HEADERS+=\mainwindow.h# 编译配置CONFIG+=debug_and_release CONFIG(debug, debug|release){TARGET=$$join(TARGET,,,d)DESTDIR=$$PWD/../bin/debug}else{DESTDIR=$$PWD/../bin/release}# Windows平台特定配置win32{# 使用QMAKE_POST_LINK确保在链接完成后执行QMAKE_POST_LINK=$$shell_path($$[QT_INSTALL_BINS]/windeployqt.exe)\--qmldir$$shell_path($$PWD)\$$shell_path($$DESTDIR/$$TARGET$$escape_expand(.exe))}# 链接库配置unix{LIBS+=-ldl}win32{LIBS+=-luser32}# dll-project/dll-project.proQT+=widgets core TEMPLATE=lib CONFIG+=c++11 DEFINES+=WINDOWDLL_LIB# 输出配置TARGET=WindowDll DESTDIR=$$PWD/../bin# 源文件SOURCES+=\WindowDll.cpp HEADERS+=\WindowDll.h# 编译配置CONFIG+=debug_and_release CONFIG(debug, debug|release){TARGET=$$join(TARGET,,,)DESTDIR=$$PWD/../bin/debug}else{DESTDIR=$$PWD/../bin/release}# 确保导出符号win32{QMAKE_LFLAGS+=-shared}# dll2-project/dll2-project.proQT+=widgets core TEMPLATE=lib CONFIG+=c++11 DEFINES+=WINDOWDLL_LIB# 输出配置TARGET=WindowDllTwo DESTDIR=$$PWD/../bin# 源文件SOURCES+=\WindowDll2.cpp HEADERS+=\WindowDll2.h# 编译配置CONFIG+=debug_and_release CONFIG(debug, debug|release){TARGET=$$join(TARGET,,,)DESTDIR=$$PWD/../bin/debug}else{DESTDIR=$$PWD/../bin/release}# 确保导出符号win32{QMAKE_LFLAGS+=-shared}这部分代码量比较多,可以通过AI协助完成。注意多dll动态库调用的切换问题,加强安全机制,放置内存溢出等问题出现。这里展示部分代码段,后面看实现效果