unresolved external symbol _RtlStringVPrintfWorkerW 驱动函数链接错误解决

本文主要介绍了在驱动开发中遇到的未解析外部符号错误(如errorLNK2019:unresolvedexternalsymbol)及解决方法。通过添加库文件到源文件中,可以有效解决此类链接错误。

转载自http://blog.csdn.net/iamoyjj/article/details/6171792

http://blog.csdn.net/hmugua/article/details/3096757


unresolved external symbol _RtlStringVPrintfWorkerW 驱动函数链接错误解决

error LNK2019: unresolved external symbol _RtlStringVPrintfWorkerW@20 referenced in function _RtlStringCchPrintfW
error LNK2019: unresolved external symbol _RtlStringValidateDestW@12 referenced in function _RtlStringCchPrintfW

 

sources文件加入库文件

 

TARGETLIBS= $(DDK_LIB_PATH)/ntstrsafe.lib



 

编写驱动 错误error LNK2019: unresolved external symbol _DriverEntry@8 referenced in function _GsDriverEntry@8的解决办法


1
extern "C"
DriverEntry

2.
还有一种方法是改成.c文件

<think>好的,用户遇到了在VS2005中链接FFTW库时出现的LNK2019错误,具体是未解析的外部符号__imp__fftw_execute。我需要根据提供的引用信息和自己的知识来解答这个问题。 首先,LNK2019错误通常是由于链接器找不到函数定义导致的。根据引用[1],这可能是由于缺少库文件或库未正确链接。引用[3]提到在VS2008中使用FFTW时出现类似错误,可能涉及库的链接问题。 接下来,我需要考虑FFTW库的正确安装和配置步骤。用户使用的是VS2005,可能需要检查是否下载了正确版本的FFTW库,特别是预编译的Windows版本是否与编译器兼容。32位和64位的库文件不兼容,所以需要确认项目配置的平台是否匹配。 然后,检查项目属性中的附加包含目录和附加库目录是否正确指向FFTW的include和lib文件夹。链接器输入中的附加依赖项是否添加了libfftw3-3.lib或其他对应的库文件。另外,用户可能需要在代码中使用extern "C"来避免C++的名称修饰问题,因为FFTW是用C编写的。 还需要确认是否在预处理器定义中添加了正确的内容,比如FFTW_USE_DLL,特别是当使用DLL版本的库时。此外,运行时库的版本是否一致,比如MDd与MTd,可能导致冲突。 还有,检查库文件是否实际存在,路径是否正确,没有拼写错误。如果使用的是动态库,确保对应的DLL文件在可执行文件的路径中。如果问题依旧存在,可能需要重新编译FFTW库,确保与VS2005兼容。 最后,参考引用中的例子,可能需要综合这些步骤,逐步排查,确保所有配置正确无误。</think>### VS2005 LNK2019: __imp__fftw_execute 链接错误解决方案 在VS2005中使用FFTW库时出现`LNK2019: unresolved external symbol __imp__fftw_execute`错误,主要原因是链接器无法找到FFTW库的函数实现。以下是具体解决步骤: --- #### 1. 验证库文件配置 **关键问题**:FFTW的静态库(`.lib`)未正确链接到项目。 - **检查库文件类型**: - 确认下载的FFTW库是Windows预编译版本(如`fftw-3.3.5-dll32.zip`或`fftw-3.3.5-dll64.zip`)[^1] - 32位项目必须使用`libfftw3-3.lib`(32位库),64位项目使用`libfftw3-3-64.lib` - **配置项目属性**: ```text 项目属性 → 链接器 → 输入 → 附加依赖项 添加:libfftw3-3.lib ``` - **设置库路径**: ```text 项目属性 → 链接器 → 常规 → 附加库目录 添加FFTW库文件路径(如C:\fftw\lib) ``` --- #### 2. 检查动态库依赖 **关键问题**:动态库(DLL)未正确部署。 - 将`libfftw3-3.dll`复制到以下位置: - 项目生成目录(如`Debug`或`Release`文件夹) - 系统目录(如`C:\Windows\System32`,仅限32位系统) - 若使用64位库,需将DLL放入`SysWOW64`目录 --- #### 3. 头文件包含验证 **关键问题**:编译器找不到FFTW头文件。 - 在代码中包含FFTW头文件: ```c #include "fftw3.h" ``` - 配置头文件路径: ```text 项目属性 → C/C++ → 常规 → 附加包含目录 添加FFTW头文件路径(如C:\fftw\include) ``` --- #### 4. 编译器兼容性检查 **关键问题**:库文件与编译器不兼容。 - 使用VS2005编译的FFTW库必须与以下配置匹配: - **运行时库类型**:`Multi-threaded Debug DLL (/MDd)`或`Multi-threaded DLL (/MD)` - **平台工具集**:选择`Visual Studio 2005 (v80)` --- #### 5. 代码规范修正 **关键问题**:C/C++混合编程导致符号修饰错误。 - 在包含头文件时添加`extern "C"`声明: ```cpp extern "C" { #include "fftw3.h" } ``` --- #### 6. 重新编译FFTW(可选) 若预编译库不兼容,需手动编译: 1. 下载FFTW源码([fftw.org](http://www.fftw.org)) 2. 使用VS2005命令行工具执行: ```bash configure --with-our-malloc --enable-shared --disable-static nmake ``` --- ### 典型错误排查表 | 现象 | 原因 | 解决方案 | |------|------|----------| | 编译通过,链接失败 | 库文件未正确链接 | 检查附加依赖项和库路径 | | 运行时提示缺少DLL | 动态库未部署 | 复制DLL到输出目录 | | 仅Release模式报错 | Debug/Release库混用 | 区分`libfftw3-3.lib`和`libfftw3-3d.lib` | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值