积极答复者
驱动开发出现 ::无法解析的外部符号 _WdfFunctions

问题
-
编写驱动程序,使用WdfDriverCreate后就出现
1>DriverMain.obj : error LNK2001: 无法解析的外部符号 _WdfFunctions
1>DriverMain.obj : error LNK2001: 无法解析的外部符号 _WdfDriverGlobalsNTSTATUS AddDevice(WDFDRIVER driver,PWDFDEVICE_INIT init)
{
return STATUS_SUCCESS;
}
extern "C" NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject,PUNICODE_STRING
RegistryPath)
{WDF_DRIVER_CONFIG config;
WDF_DRIVER_CONFIG_INIT(&config,AddDevice);return WdfDriverCreate(DriverObject,RegistryPath,WDF_NO_OBJECT_ATTRIBUTES,&config,WDF_NO_HANDLE);
}请问这个要怎么解决.谢谢
- 已移动 ChiYau 2012年4月20日 5:27 這個提目和C++ 相關的, 所以發在C++版塊比較合適 (发件人:Visual Studio 2010)
答案
-
LiFishing,你好!
如果一个符号没有内部定义,链接器也找不到它的外部定义的话,就可能产生“无法解析的外部符号错误”。如果你想知道更多关于这个错误的原因,就参看这个链接:http://social.msdn.microsoft.com/Forums/zh-CN/visualcpluszhchs/thread/08f0d2c3-6f5b-4cd2-a6ae-1d84b492e0e5。
为了尽早解决这个问题,我建议你查找 _WdfFunctions 和 _WdfDriverGlobals 的定义。你可以尝试属性页上的/VERBOSE选项。打开Project->Properties->Configuration properties->Linker->General->Show Progress->Display all progress messages ,这样在控制台窗口就能打印出有关库文件的错误丢失信息。
如果它们是你自己声明和定义的,那么请在使用前引用头文件,类似语句#include "a.h"。如果它们是在某个外部头文件中声明的,你可以尝试一下的方法添加外部引用:
1->打开Configuration Properties->Linker->Input->"Additional Dependencies",在这里添加.lib文件的名称。
2->打开Configuration Properties->Linker->General->"Additional Library Directories",并在这里添加.lib文件的路径。
3->打开Configuration Properties->C/C++->General ->"Additional Include Directories",在这里添加所要引用的头文件的路径。
4->在项目中用到这该符号的地方,添加#include "*.h"语句。希望我的回复对你有所帮助。
Helen Zhao [MSFT]
MSDN Community Support | Feedback to us
- 已标记为答案 Helen Zhao 2012年4月27日 6:05
全部回复
-
LiFishing,你好!
如果一个符号没有内部定义,链接器也找不到它的外部定义的话,就可能产生“无法解析的外部符号错误”。如果你想知道更多关于这个错误的原因,就参看这个链接:http://social.msdn.microsoft.com/Forums/zh-CN/visualcpluszhchs/thread/08f0d2c3-6f5b-4cd2-a6ae-1d84b492e0e5。
为了尽早解决这个问题,我建议你查找 _WdfFunctions 和 _WdfDriverGlobals 的定义。你可以尝试属性页上的/VERBOSE选项。打开Project->Properties->Configuration properties->Linker->General->Show Progress->Display all progress messages ,这样在控制台窗口就能打印出有关库文件的错误丢失信息。
如果它们是你自己声明和定义的,那么请在使用前引用头文件,类似语句#include "a.h"。如果它们是在某个外部头文件中声明的,你可以尝试一下的方法添加外部引用:
1->打开Configuration Properties->Linker->Input->"Additional Dependencies",在这里添加.lib文件的名称。
2->打开Configuration Properties->Linker->General->"Additional Library Directories",并在这里添加.lib文件的路径。
3->打开Configuration Properties->C/C++->General ->"Additional Include Directories",在这里添加所要引用的头文件的路径。
4->在项目中用到这该符号的地方,添加#include "*.h"语句。希望我的回复对你有所帮助。
Helen Zhao [MSFT]
MSDN Community Support | Feedback to us
- 已标记为答案 Helen Zhao 2012年4月27日 6:05
-
如果大家把此错误在网上搜索,一般都没有人解答。
解决方法是在sources里添加以下选项:
KMDF_VERSION_MAJOR=1
MSC_WARNING_LEVEL=/W4 /WX
请参考我的博客,希望对你有帮助:
http://blog.csdn.net/chenyujing1234/article/details/7579761