码迷,mamicode.com
首页 > 编程语言 > 详细

YJX_Driver_024_驱动代码中C和C++代码区别

时间:2016-04-06 18:28:42      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:

1、

驱动代码中C和C++代码区别
  A、函数调用约定
  B、C和C++编译方式
  C、用C++方式编译驱动
  D、C代码升级至C++
  E、优化21课的代码

本课主要是做着两个工作:"D、C代码升级至C++"、"E、优化21课的代码"

【180】把 第21课 的代码复制过来

 

 

2、
*.c
当文件后缀名为*.c时 编译器将会用C编译器方式编译
*.cpp
当文件后缀名为*.cpp时 编译器将会用C++编译器方式编译
区别:

解决办法
在需要用到C方式编译的函数前加extern "C"

需要用C方式编译的头文件做如下修改
#pragma once
#ifdef __cplusplus
extern "C"
{
#endif
#include <NTDDK.h> //这里包含需要用C方式编译的头文件
#ifdef __cplusplus
}
#endif

1>errors in directory g:\驱动教程\024_驱动代码中c和c++代码区别\mini_ddk
1>mini_ddk.obj : error LNK2001: unresolved external symbol "struct _ServiceDescriptorTable * KeServiceDescriptorTable" (?KeServiceDescriptorTable@@3PAU_ServiceDescriptorTable@@A)
1>bufferoverflowk.lib(gs_support.obj) : error LNK2019: unresolved external symbol _DriverEntry@8 referenced in function _GsDriverEntry@8
1>sys\i386\ddk_helloworld.sys : error LNK1120: 2 unresolved externals
?DriverEntry@@YGJPAU_DRIVER_OBJECT@@PAU_UNICODE_STRING@@@Z

_DriverEntry@8 //要求格式
?DriverEntry@@YGJPAU_DRIVER_OBJECT@@PAU_UNICODE_STRING@@@Z ?
实例 修改21课的代码 升级到C++编译模式
A、为入口函数 添加Extern "C"
B、修改Source文件
C、修改21课的BUG


extern "C" __declspec(naked) __stdcall test(int a, int b)

 

YJX_Driver_024_驱动代码中C和C++代码区别

标签:

原文地址:http://www.cnblogs.com/debugskill/p/5360039.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!