【问题标题】:unresolved external symbol _DbgPrint in Win7 64bitWin7 64位中未解析的外部符号_DbgPrint
【发布时间】:2013-01-07 03:47:24
【问题描述】:

我使用 VS2010 在 Win7 64bit 中编写我的驱动程序。驱动很简单,打印一些东西,像这样:

#include <ntddk.h>

VOID 
OnUnload( IN PDRIVER_OBJECT DriverObject )
{
    DbgPrint("My Driver Unloaded!");
}

NTSTATUS 
DriverEntry( IN PDRIVER_OBJECT theDriverObject, IN PUNICODE_STRING theRegistryPath )
{
    NTSTATUS status;

    DbgPrint("My Driver Loaded!");
    theDriverObject->DriverUnload = OnUnload;

    return STATUS_SUCCESS;
}

当我完成它时,VS2010 说:错误 LNK2019:未解析的外部符号 _DbgPrint。我不知道为什么。 Win7 32bit的驱动程序是可以的。

我认为可能是Lib config错误,而我的Lib config是:

C:\WinDDK\7600.16385.1\lib\win7\ia64;

并且包含配置是:

C:\WinDDK\7600.16385.1\inc\ddk;
C:\WinDDK\7600.16385.1\inc\api;
C:\WinDDK\7600.16385.1\inc;

配置好了吗?我应该注意的地方是什么?我该如何解决?

【问题讨论】:

  • 我这样设置“C\C++ - 预处理器 - 预处理器定义”项:WIN32=100;_X86_=1;WINVER=0x501;DBG=1。我认为这是一个问题,但我不知道它有多正确
  • C:\WinDDK\7600.16385.1\lib\win7\amd64 ia64 for itanium, amd64 for x64
  • 感谢 sergmat。你说的对。应该是amd64。但我再次收到“错误 LNK2019:无法解析的外部符号 _DbgPrint”。

标签: windows-7 driver


【解决方案1】:

VS 2010 不用于编译和构建驱动程序。但是,Visual Studio 2012 具有此功能。

在VS 2012之前,需要使用WinDDK构建驱动(不知道现在能不能下载)。

【讨论】:

  • 我已经安装了WinDDK,你可以看到我设置了lib "C:\WinDDK\7600.16385.1\lib\win7\ia64;"。当我使用 WinDDk 的命令编译程序时,这没有任何错误。所以我认为我的项目的配置是错误的
  • @wenz,WinDDk 编译器/机制用于编译驱动程序。 VS2010 将无法工作,因为它会尝试链接/查找用户空间运行时库。
  • 我用VS2010在WinXP和Win7(32bit)下编写和编译驱动。这没有问题。如果您的配置正确,VS2010 可以工作。
猜你喜欢
  • 1970-01-01
  • 2011-02-09
  • 2011-03-10
  • 2016-10-09
  • 1970-01-01
  • 2015-06-27
相关资源
最近更新 更多