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" ([email protected]@[email protected]@A)
1>bufferoverflowk.lib(gs_support.obj) : error LNK2019: unresolved external symbol [email protected] referenced in function [email protected]
1>sys\i386\ddk_helloworld.sys : error LNK1120: 2 unresolved externals
[email protected]@[email protected]@[email protected]@@Z
[email protected] //要求格式
[email protected]@[email protected]@[email protected]@@Z ?
实例 修改21课的代码 升级到C++编译模式
A、为入口函数 添加Extern "C"
B、修改Source文件
C、修改21课的BUG
extern "C" __declspec(naked) __stdcall test(int a, int b)