静态连接(dynamic link)和动态连接(static link)初步理解

本文讲述了作者在配置QT和VTK环境时遇到的静态连接与动态连接问题。默认的QT编译为动态链接导致在不同系统上运行时报错。静态链接库在编译时将所有函数、变量复制到目标应用,而动态链接库在运行时加载,影响程序的可移植性。VS中的MD和MT选项分别对应动态和静态运行时库,理解这两者对于API开发和程序移植至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前两天配置QT和VTK环境,焦头烂额啊,第一次配置个环境配置这么费劲的,这俩工具都不是微软出的开发库,需要自己编译,编译时间那个长。。。3,4个小时啊,等的花都谢了,好不容易编译好了,又出现了各种问题。

首先,早就听说过这两个库是跨平台的,当时觉得好牛逼啊,作为一个鄙视windows的linuxer,当然是要用跨平台的东西了,然后下载,安装,编译,经过了一晚上的折腾,QT编译好了,随便写了段TEST代码,编译,通过,运行,失败,问题是,失败就失败呗,居然提示未找到一个什么QT的动态链接库,网上搜了下,发现QT默认编译是dynamic的,当时那个悔,这不坑爹么,没办法,再编译一次,选成static,又是一夜,最后看一下,终于不提示了。

试着在虚拟机XP上运行一下,你不是跨平台厉害么,WINDOWS不同版本总能搞定吧?结果又提示错误,一看,是msvctrd.dll错误,我靠,立刻明白了,是MD和MT设置问题,赶明QT的STATIC参数设置只是内部库的静态连接,不包括QT和windows的连接啊!彻底被坑死,于是决定今晚再编译一晚上,应该没问题了。。。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值