error LNK2019: unresolved external symbol _DriverEntry@8 referenced in function _GsDriverEntry@8

原创 2013年04月09日 17:05:15

       对于大多数驱动开发初学者来说,有时候我们写的代码,或者在网上copy的代码,你会发现编译程序是出现这样的错误error LNK2019: unresolved external symbol _DriverEntry@8 referenced in function _GsDriverEntry@8
e:\vs2008~1\listpr~1\listpr~1\objchk_win7_x86\i386\ListProcess.sys : fatal error LNK1120: 1 unresolved externals

       当你在怀疑自己的代码,或者你看到的博客文章时。其实你大可不必有这样的疑虑,居然编译器没有提示是代码编写出错,那么你的代码编写是正确,想想或许是其他原因。这里不卖关子了,直接告诉大家我其实是编译器骗了你。我们下来说说这事什么错误——这是一个链接错误,原来是系统在链接时找不到入口函数_DriverEntry@8。在VS2008或者VS2010中编译默认的编译方式是采用C++方式。错误意思:显然是C编译器对DriverEntry进行编译后的结果,前缀“_”是C编译器特有的,后缀@8”是所有参数的长度。原来我们现在使用的是C++编译器,一定是它把DriverEntry编译成了系统无法认识的另一副模样了(实际上,C++编译器会把它编译成以“?DriverEntry@@”开头的一串很长的符号)。到这里我想你应该猜到怎么解决这个问题了。

我这里提供两个解决方法:

方法一:

   在这个函数前面加上extern "C"修饰符,上述问题即立刻消失了。extern "C"提醒编译器要使用C编译格式编译DriverEntry函数,这样编译生成的函数名称为_DriverEntry@8”,链接器即可正确地识别出符号了。编译后错误就消失了。这里大家要记得哟,如果下次不是函数DriverEntry 而是其他函数XXXXX也可以采用相同的方法。这叫举一反三,学习方法很重要!

方法二:

   这个方案其实很简单,直接把.cpp文件的改成.c文件。为什么这样也可以呢?简单说说,我们的.cpp文件采用的是C++的编译的方式,而.c文件采用的是C语言的编译方式。所以这样也可以解决问题。

   我个人建议大家使用方法一,这样代码的移植性会相对增加。

 

造成中国软件产业的负面影响----谁?

目前,国内的软件行业,经历了多次洗牌,从传统软件开发到.com,从.com又回归传统软件,从erp到crm,从ISO到CMM,从c++到java,热浪一波接一波,此起彼伏。游戏规则重新制定,市场重新整...
  • DrunkenLion
  • DrunkenLion
  • 2001-09-13 08:54:00
  • 1006

微型驱动程序、微型端口驱动程序和驱动程序对

微型驱动程序或微型端口驱动程序可以用作半个驱动程序对。诸如(微型端口、端口)的驱动程序对可以简化驱动程序开发。在驱动程序对中,一个驱动程序处理整个设备集合共同的常规任务,而另一个驱动程序处理特定于单个...
  • wzsy
  • wzsy
  • 2016-03-28 14:12:19
  • 566

error LNK2019: unresolve d external symbol _DriverEntry@8 referenced in function _GsDriverEntry@8

描述错误: D:\VCxxx\ssdt3>build BUILD: Compile and Link for x86 BUILD: Loading d:\winddk\7600.16385.1\...
  • zcc1414
  • zcc1414
  • 2013-11-22 16:10:44
  • 990

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

1extern "C"DriverEntry2.还有一种方法是改成.c文件
  • hmugua
  • hmugua
  • 2008-10-18 17:58:00
  • 2308

error LNK2019: unresolved external symbol __imp__strnicmp referenced in function _isWithBlack_me@12

转自VC错误:http://www.vcerror.com/?p=2098 问题描述: 在做驱动编程的时候,用了'strnicmp' 函数,但是提示如下错误: error LNK2019: un...
  • swanabin
  • swanabin
  • 2016-01-21 14:40:52
  • 906

error LNK2019: unresolved external symbol __imp__inet_ntoa@4 referenced in function

用vs2005编译udp  socket的时候,出现这个连接错误:1>Sever.obj : error LNK2019: unresolved external symbol __imp__clos...
  • lingxiu0613
  • lingxiu0613
  • 2011-07-14 16:17:51
  • 7648

unresolved external symbol __imp___CrtDbgReportW referenced in function

unresolved external symbol __imp___CrtDbgReportW referenced in function "public: class facedata & __...
  • BikeyTang
  • BikeyTang
  • 2014-06-06 12:31:17
  • 1438

WDK _WdmlibIoCreateDeviceSecure 连接出错

今天写驱动,链接总是出现 error LNK2019: unresolved external symbol _WdmlibIoCreateDeviceSecure@36 referenced in...
  • wzsy
  • wzsy
  • 2013-12-16 09:43:48
  • 2314

LNK2019 无法解析的外部符号 DriverEntry,该符号在函数 FxDriverEntryWorker 中被引用

函数定义: NTSTATUS DriverEntry( PDRIVER_OBJECT pDriverObject, PUNICODE_STRING pRegistryPath) { KdPrin...
  • understand125
  • understand125
  • 2017-07-18 11:34:41
  • 432

error LNK2019: unresolved external symbol _DriverEntry@8 referenced in function _GsDriverEntry@8

对于大多数驱动开发初学者来说,有时候我们写的代码,或者在网上copy的代码,你会发现编译程序是出现这样的错误error LNK2019: unresolved external symbol _Dr...
  • fsjaky
  • fsjaky
  • 2013-04-09 17:05:15
  • 2836
收藏助手
不良信息举报
您举报文章:error LNK2019: unresolved external symbol _DriverEntry@8 referenced in function _GsDriverEntry@8
举报原因:
原因补充:

(最多只允许输入30个字)