洛阳微信平台网站建设创建网站成功案例
2026/1/26 5:39:22 网站建设 项目流程
洛阳微信平台网站建设,创建网站成功案例,做网站安卓客户端,制作网页的Simulink模型转.so实战#xff1a;高效部署到Qt项目的操作指南1、背景1.1 方案对比1.2 方案选择2、实践操作2.1 创建单独的文件夹进行管理2.2 创建CMakelists2.3 编译输出so文件2.4 查看对应的so发布件2.5 windows平台生成lib2.6 Qt工程中适配.pro文件2.7 编译运行3、总结3.1 …Simulink模型转.so实战高效部署到Qt项目的操作指南1、背景1.1 方案对比1.2 方案选择2、实践操作2.1 创建单独的文件夹进行管理2.2 创建CMakelists2.3 编译输出so文件2.4 查看对应的so发布件2.5 windows平台生成lib2.6 Qt工程中适配.pro文件2.7 编译运行3、总结3.1 改进项3.2 启发1、背景众所周知simulink可视化程度高常常用于各类电气模型建模极大方便主流电网场景的建模仿真模拟。这些模型要应用到实际场景中例如部署到控制程序里面simulink提供转化C接口代码可以直接将模型直接输出纯C代码以供外部工程调用相关接口进行使用。1.1 方案对比关于将Simulink模型导出的C接口适配到工程中业界主要采用以下两种方案库文件集成方案将Simulink生成的C代码编译为静态库.lib或动态库.so工程通过链接库的方式调用功能。源码集成方案直接将Simulink生成的C源代码整合到工程代码库中与其他源代码一同编译构建。方案编号优点缺点11、代码架构策略与业务解耦整洁度高2、编译速度快3、安全性高可以不用向外部提供核心控制算法4、方便当前项目代码架构管理5、方便后续策略升级维护只需要替换so即可1、需要额外适配CMakelists或者Makefie等2、软件debug调试无法进行跟踪到源码全靠simulink转换代码的正确性3、外部工程需要进行特殊适配例如Qt工程需要适配.pro21、具有较强的调试便利性2、适配工作量相对较少对项目原工程改动少3、编译简单较容易实现1、引入simulink代码破坏原先代码架构不利于管理2、编译负担增重降低编译效率3、依赖项复杂。必须手动在 .pro 文件里包含大量 MATLAB 预定义的宏和系统头文件。1.2 方案选择综上对比考虑后续软件代码架构、维护、项目管理等因素选用方案1进行操作实践。2、实践操作2.1 创建单独的文件夹进行管理将simulink导出来的纯C代码都放在一个目录下为了方便代码管理与工程源代码分开新建目录进行保存。此时目录下应该只有.c和.h文件其他文件可以清除掉。2.2 创建CMakelists我本地linux和windows均已安装CMakeLists为了方便工程验证采用CMakeListsmake这一套进行编译。CMakeLists内容如下可供参考cmake_minimum_required(VERSION 3.10)project(simtarget C)set(CMAKE_C_STANDARD 11)# 重新开启函数符号的自动导出 (对函数有效) if(WIN32)set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)endif()set(SIM_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR})add_library(simtarget SHARED ${SIM_SRC_DIR}/*.c#这里可以替换成你想要的.c文件)target_include_directories(simtarget PUBLIC ${SIM_SRC_DIR})set_target_properties(simtarget PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}OUTPUT_NAME LowVolStrategy)可以根据自己的实际情况修改可以指定自己想要编译的核心策略对应的.c文件。为了方便我自己在Windows下也能正常进行编译调试这个CMakeLists同样适用于windows环境我本地采用VS 2022进行编译真正地实现跨平台开发与调试。2.3 编译输出so文件编译输出就是常规的指令执行即可mkdir build cd build cmake..make执行结果如下到这一步说明执行成功2.4 查看对应的so发布件查看当前build目录下是否生成对应的so发布件如果有说明编译成功~2.5 windows平台生成lib同理先在windows下进行cmake编译然后用VS 2022打开对应sln文件进行编译windows是生成对应的依赖库如下2.6 Qt工程中适配.pro文件在对应的编译路径下添加新增的依赖库记得也需要把头文件路径也包含进去windows下添加INCLUDEPATH$$PWD/alg/lowVolStrategy/#对应头文件目录LIBS-L$$PWD/lib/alg-lLowVolStrategy win32:!win32-g: PRE_TARGETDEPS$$PWD/lib/alg/LowVolStrategy.liblinux下添加INCLUDEPATH$$PWD/alg/lowVolStrategy/#对应头文件目录LIBS-L$$PWD/lib/alg-lLowVolStrategy2.7 编译运行编译程序执行成功~3、总结3.1 改进项simulink转换纯C代码说实话可读性比较差不建议对源文件进行直接修改因为修改源文件的话后续重新生成C代码又得重新适配所以能够通过上层工程进行编译改进是最好的方式simulink的代码存在大量的全局接口、变量等如果涉及到与外部的合作其实是需要包装一层再对外暴露的相当于自己实现业务适配层但我觉得是有必要的这样业务跟策略能够更好的解耦涉及跨平台的场景尽量将CMakeLists等做得更通用一些比如我前面介绍的那样3.2 启发1、想到什么有时间就立马去做越早尝试越早发现问题2、一次性把事情做对先不求做到最好但一定往最好的方向不断靠近3、不断思考如何让工程架构更好、更优、更易于维护有时候突破也不是要从0到1也可以每次都比之前更优、更好、操作更便捷~

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询