pragma once
编译的约定,防止重复导入头文件,造成重复定义的问题,和#ifndef ### #define ### ...一样的效果
ifdef DLL_EXPORTS
define DLL _declspec(dllexport)
else
define DLL _declspec(dllimport)
endif
这段表示是输入头定义还是实现,定义了这个DLL的宏
dllexport表示当前工程需要实现这个定义,自然需要链接的代码
dllimport表示要引入别的库,那头文件就是这个
_declspec这是API的二进制调用约定,可查下__stdcall、__cdecl和__fastcall是三种函数调用协议
ifdef _cplusplus
extern "C"
{
endif
//这个是区分C和C++编译器用的,加上extern "C",编译的结果函数就按照c的约定,否则会按照c++的约定出现修饰,
这样C语言代码引用这些库的时候就会出现找不到符号定义的问题
DLL int sum(int a, int b);
//函数的定义了
ifdef _cplusplus
}
endif
“DLL的所有源文件都应该包含这个头文件” 这句话没啥特别含义,只要知道我要使用别的库,自然需要头文件和库文件就够了