error LNK2019: unresolved external symbol _DriverEntry@8 referenced in function _GsDriverEntry@8
2013-04-09 17:05
1271 查看
对于大多数驱动开发初学者来说,有时候我们写的代码,或者在网上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语言的编译方式。所以这样也可以解决问题。
我个人建议大家使用方法一,这样代码的移植性会相对增加。
_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 _DriverEntry@8 referenced in function _GsDriverEntry@8的解决办法
- error LNK2019: unresolve d external symbol _DriverEntry@8 referenced in function _GsDriverEntry@8
- error LNK2019: unresolve d external symbol _DriverEntry@8 referenced in function _GsDriverEntry@8
- error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
- 关于error LNK2019::Unresolved External Symbol * Referenced In Function..解决办法 2
- error LNK2019: unresolved external symbol _viOpen@20 referenced in function _main
- 关于error LNK2019::Unresolved External Symbol * Referenced In Function..解决办法
- VS2015 MSVCRTD.lib(_chandler4gs_.obj) : error LNK2019: unresolved external symbol __except_handler4_common referenced in function __except_handler4
- error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
- error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
- error LNK2019: unresolved external symbol _va_end referenced in function _fatal_error
- error LNK2019:unresolved external symbol *** referenced in function ***的解决方案
- error LNK2019:unresolved external symbol *** referenced in function ***的解决方案
- error LNK2019: unresolved external symbol _WinMain referenced in function _WinMainCRTStartup
- 转载:error LNK2019: unresolved external symbol __GSHandlerCheck referenced in function
- MSVCRT.lib(wcrtexew.obj) : error LNK2019: unresolved external symbol wWinMain referenced in function
- debug : error LNK2019: unresolved external symbol compress referenced in function "public: int __cde
- error LNK2019: unresolved external symbol __imp__ func@20 referenced in function..
- error LNK2019:unresolved external symbol *** referenced in function ***的解决方案
- error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartu