使用VS2019 KMDF模板开发Win10 x64内核驱动遇_fltused链接错误
修复KMDF驱动编译时
_fltused符号链接错误的方案 问题分析
_fltused是编译器标记浮点支持的符号,内核驱动默认不需要浮点操作,出现这类错误通常是项目设置或代码中意外引入了浮点相关的编译选项/代码逻辑。
具体修复步骤
调整项目编译选项
打开项目属性,依次进入配置属性 -> C/C++ -> 代码生成:- 将
浮点模型设置为无(对应选项(/fp:no)) - 确认
启用增强指令集设置为未设置或SSE2(内核模式下避免使用更高级的浮点指令集)
- 将
排查并清理浮点相关代码
检查所有源文件(如Driver.c、Moufilter.c),移除直接使用浮点类型(float/double)或浮点函数(sqrt/sin等)的代码。如果必须使用浮点运算,需在单个源文件(比如Driver.c)开头添加以下代码,确保_fltused只定义一次:#ifdef _MSC_VER #pragma function(_fltused) __declspec(selectany) extern int _fltused = 0; #endif清理并重新生成项目
执行生成 -> 清理解决方案,再切换到x64 Release配置,执行生成 -> 生成解决方案。验证项目模板配置一致性
对比之前正常编译的KMDF项目,确认当前项目配置属性 -> 链接器 -> 输入中的附加依赖项无多余浮点相关库,且项目正确继承了KMDF模板的默认设置。
内容的提问来源于stack exchange,提问作者IgnoreExeption
相关产品推荐
相关产品推荐

