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语言的编译方式。所以这样也可以解决问题。

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

 

Error LNK2019:Unresolved External Symbol 解决方案

参考:http://www.educity.cn/wenda/351518.html Error LNK2019:Unresolved External Symbol *** Referenced ...
  • rudy_axle
  • rudy_axle
  • 2014年12月26日 18:07
  • 7148

error LNK2019:unresolved external symbol的解决方法

我们都知道,当我们在链接程序的时候,出现了如下错误,那是代表,程序没有找到在.h文件中定义的函数的实现。 error LNK2019:unresolved external symbol   有...
  • zxj1988
  • zxj1988
  • 2013年03月06日 16:33
  • 12524

error LNK2019: unresolved external symbol

error LNK2019: unresolved external symbol(2007-05-28 10:23:43) 转载   分类:Programe(C/C++/VC/....
  • jtop0
  • jtop0
  • 2010年08月01日 03:29
  • 62244

C++ error LNK2019: "unresolved external symbol"解决方法

1>  LINK : D:\code\OpenGLTest\Debug\OpenGLTest.exe not found or not built by the last incremental li...
  • jd_19900903
  • jd_19900903
  • 2014年05月19日 16:41
  • 5036

error LNK2019: unresolved external symbol "public 错误的出现原因.

从网上查询中发现这个问题 有很多原因,大多数 是和链接库有关. 我的程序也出现了这个错误,经过仔细检查发现,是类定义了一个函数而没有实现,也会出现这样的问题,以后切忌 切忌!! 1>main.obj ...
  • michealmeng555
  • michealmeng555
  • 2011年06月07日 15:27
  • 8523

关于error LNK2019: unresolved external symbol错误

自己编写的一个OpenCL程序,在编译的时候出现下面的错误: error LNK2019: unresolved external symbol clCreateKernel referenced ...
  • bsaiqing
  • bsaiqing
  • 2013年06月14日 10:44
  • 995

error LNK2019: unresolved external symbol 问题

main.obj : error LNK2019: unresolved external symbol "public: virtual __thiscall CvSVM::~CvSVM(void)...
  • chenbang110
  • chenbang110
  • 2012年05月12日 11:02
  • 26484

error LNK2019:unresolved external symbol

error LNK2019:unresolved external symbol 分类: 网络编程2012-07-22 17:30 31人阅读 评论(0) 收藏 举报 出现以下错误...
  • jfkidear
  • jfkidear
  • 2012年08月15日 20:42
  • 6904

error LNK2019: unresolved external symbol __imp_SetupDiDestroyDeviceInfoList 错误解决

今天把以前代码中取电池信息的类,加入到com工程中。 结果报了Link错误。错误如下: error LNK2019: unresolved external symbol __imp_SetupD...
  • duoluoxia
  • duoluoxia
  • 2012年05月24日 10:03
  • 2991

初学opengl(一)第一个opengl程序及error LNK2019: unresolved external symbol的解决

操作系统:Windows 8.1; 开发环境:Visual Studio 2013 opengl的安装非常简单,很多人写博客介绍,随便找一个跟着做就差不多。 安装完成后,找了一个同学写好的工程拿来...
  • u011636440
  • u011636440
  • 2016年03月01日 15:02
  • 1292
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:error LNK2019: unresolved external symbol _DriverEntry@8 referenced in function _GsDriverEntry@8
举报原因:
原因补充:

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