当前位置: 首页 > news >正文

网站建设 公司网站排名优化专业定制

网站建设 公司,网站排名优化专业定制,wordpress的文章title在哪里,深圳建设局官方网站VTK - 编译静态库(No DLL) 1. 为什么要编译纯静态库(No DLL)2. 编译过程2.1 前提条件2.2 VTK变量 - 关键配置项 3. 如何在 CMake 中引用 VTK 静态库3.1 最小 CMake 示例3.2 其他注意事项3.3 示例项目结构 1. 为什么要编译纯静态库…

VTK - 编译静态库(No DLL)

  • 1. 为什么要编译纯静态库(No DLL)
  • 2. 编译过程
    • 2.1 前提条件
    • 2.2 VTK变量 - 关键配置项
  • 3. 如何在 CMake 中引用 VTK 静态库
    • 3.1 最小 CMake 示例
    • 3.2 其他注意事项
    • 3.3 示例项目结构

1. 为什么要编译纯静态库(No DLL)

是否需要编译 VTK 为静态库,取决于你的发布需求。

  • 如果你要做一个 独立运行的桌面软件 或者 不想带一堆 DLL,推荐构建为静态库。
  • 如果你追求模块灵活更新、构建速度快,则使用默认的 DLL 构建方式即可。

VTK 默认会构建为动态库(.dll / .so),但在一些特定场景下,使用静态库更有优势

📌 场景🎯 原因与优势
发布独立程序静态库将代码打包进最终 .exe,无需附带 DLL,部署简单
禁止运行时 DLL 依赖避免 “缺失 DLL” 错误(如 `vtkRenderingOpenGL2-9.3.dll 丢失”)
提升安全性和一致性所有依赖编译进一个文件,不怕外部 DLL 被篡改或替换,版本更稳定
用于嵌入式或受限系统某些环境无法使用动态加载,必须链接成单一可执行文件
方便封装为第三方 SDK便于生成单一 .lib.h 提供给他人调用
调试和发布统一控制所有符号和行为在链接阶段决定,避免运行时加载问题

🚫 静态库的劣势

缺点描述
🔺 编译体积大所有依赖都被编进程序,可执行文件变大
🔺 编译时间略长静态链接更耗时,尤其是构建完整 VTK
🔺 内存重复多个程序同时运行,各自都加载全部代码,占内存更高
🔺 不利于模块更新每次改动都需重新编译主程序,不能单独替换模块 DLL

2. 编译过程

2.1 前提条件

  1. VTK 源码包(VTK官网 GitHub 下载)
  2. CMake(推荐 3.20+)
  3. C++ 编译器
    • Windows: Visual Studio (如 VS2019)
    • Linux/macOS: GCC / Clang
  4. 详细参数参考:VTK官方文档

2.2 VTK变量 - 关键配置项

变量含义
BUILD_SHARED_LIBSOFF❗关闭动态库,表示构建静态库
VTK_BUILD_TESTINGOFF关闭测试编译,加快速度
VTK_WRAP_PYTHONOFF不需要 Python 绑定时关闭
CMAKE_INSTALL_PREFIX-安装路径 D:/Libs/VTK_static_install
VTK_GROUP_ENABLE_QtYES使用 QVTKOpenGLNativeWidget 显示 VTK 渲染窗口
Qt5_DIR-C:\QT\5.15.2\msvc2019_64\lib\cmake\Qt5
Qt6_DIR-C:\QT\6.8.3\msvc2022_64\lib\cmake\Qt6
CMAKE_BUILD_TYPE (Linux)Release构建类型(仅限非 MSVC)

BUILD_SHARED_LIBS

设置值结果描述
ON构建 动态库编译输出为 .dll(Windows)或 .so(Linux/macOS),运行时需要这些共享库。
OFF构建 静态库编译输出为 .lib(Windows)或 .a(Linux/macOS),库内容会被链接到最终可执行文件中。

VTK_GROUP_ENABLE_Qt

设置值结果描述
DEFAULT不启用 Qt 模块(默认状态)除非被其他模块依赖,否则不会自动启用任何 Qt 相关模块
YES启用全部 Qt 相关模块快速启用所有 Qt 支持模块,用于开发基于 Qt 的 VTK 应用
NO禁用全部 Qt 相关模块强制不使用任何 Qt 模块,适合纯后台或非图形程序
WANT优先启用 Qt 模块(依赖满足则启用)柔性启用,依赖项满足就启用 Qt 模块,不满足也不会报错
DONT_WANT优先不启用 Qt 模块不主动启用,除非被其他模块显式依赖
REQUIRE强制启用 Qt 模块,否则 CMake 报错如果 Qt 依赖找不到,CMake 会报错,适合确保 Qt 是构建必需的一部分
FORBID强制禁用 Qt 模块即使依赖存在,也绝不允许使用 Qt 模块,用于严格限制依赖环境

启用 Qt 模块后,CMake 会自动开启以下 VTK 模块(具体依赖版本):

模块名称功能说明
VTK::GUISupportQtQt 事件处理支持,基础模块
VTK::GUISupportQtOpenGL用于 QVTKOpenGLNativeWidget 渲染窗口嵌入
VTK::RenderingQtQt 交互渲染器
VTK::ViewsQtQt 视图控件支持(如图表)
VTK::IOExportQt图像导出为 SVG、PDF 等

3. 如何在 CMake 中引用 VTK 静态库

在你完成了 VTK 的静态库编译和安装(如安装到 D:/Libs/VTK_static_install)后,可以通过以下方式在你的项目中使用它:

3.1 最小 CMake 示例

cmake_minimum_required(VERSION 3.15)
project(MyVTKApp)# 设置 VTK 安装路径
set(VTK_DIR "D:/Libs/VTK_static_install/lib/cmake/vtk-9.3") # 注意修改版本号# 查找 VTK 包(会自动导入全部模块)
find_package(VTK REQUIRED)# 启用自动头文件包含路径(VTK 自带变量)
include(${VTK_USE_FILE})add_executable(MyVTKApp main.cpp)# 链接 VTK 所需模块
target_link_libraries(MyVTKApp PRIVATE ${VTK_LIBRARIES})

3.2 其他注意事项

⚠ 注意点说明
静态链接 CRT静态库推荐开启 -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded
使用 QVTKOpenGLNativeWidget需要引入 Qt 的模块头文件和链接 Qt 库
多线程构建推荐设置-DCMAKE_CXX_FLAGS="/MP" 可启用 MSVC 的并行编译提升速度
配合 Qt 静态库Qt 也需静态编译,否则会混合使用 DLL 与静态库导致链接错误
防止运行时 DLL 报错确保依赖项(如 freetype、zlib 等)也为静态版本,否则链接会失败或运行缺 DLL

3.3 示例项目结构

MyVTKApp/
├── CMakeLists.txt
├── main.cpp
└── ...

示例 main.cpp

#include <vtkSmartPointer.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>int main()
{auto renderer = vtkSmartPointer<vtkRenderer>::New();auto renderWindow = vtkSmartPointer<vtkRenderWindow>::New();renderWindow->AddRenderer(renderer);auto interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New();interactor->SetRenderWindow(renderWindow);renderWindow->Render();interactor->Start();return 0;
}
http://www.cadmedia.cn/news/15647.html

相关文章:

  • 网站建设到上线步骤互联网推广公司靠谱吗
  • 阿里云wordpress优化seo外包服务项目
  • 腾讯云快速搭建网站上海网络优化服务
  • 长春哪家做网站做的好百度排名竞价
  • 自由室内设计师接单网站淘客推广
  • 建设网站哪间公司比较好it培训
  • 需要做网站的企业电话seo数据监控平台
  • 深圳深圳网站建设百度最新版app下载安装
  • 聊城市城乡建设部网站查询怎么查看网站的友情链接
  • 网上营销网站网络营销策划ppt范例
  • 网络推广和seo大连网站seo
  • 中小学 网站建设 通知流量平台
  • 广州网站建设推广今日新闻摘抄50字
  • 企业网站建设专业性体现在百度搜索大数据怎么查
  • 广州网站建设信科公司seo如何优化关键词
  • 网站建设作用 名词解释东莞网站定制开发
  • 甘肃 政府网站信息内容建设semir是什么牌子
  • 网站建设计划书 模板下载网站快速收录软件
  • 中国建筑网建设通证书查询整站优化系统厂家
  • 项目外包公司到底值不值得去快速seo关键词优化技巧
  • 南宁网站推广哪家好百度搜索引擎工作原理
  • 西安市住宅和城乡建设局网站搜索引擎排名优化方案
  • 河南省住建厅网站豫建设标网站模板大全
  • 网站建设中数据安全研究赣州seo公司
  • 宜宾网站建设多少钱360免费建站系统
  • 邯郸一站式网络推广欢迎咨询互联网销售是做什么的
  • dz网站自己做的模板放在哪里推广方案怎么写
  • 商城网站制作公司网络营销岗位招聘信息
  • 巨鹿网站建设公司培训机构网站制作
  • 企业网站功能推广优化seo