一般来讲,好像都是在mydll.h中写入
_declspec(dllexport) int Max(int a,int b)
............这样的写法是用来导出Max函数,使调用mydll的程序可以调用Max。
但今天我看到一个dll(是一个系统级的钩子),但它在mydll.h中写的是import而不是export,这是何故?大概意思如下:
头文件
////////////////////////////////////////////////////////////////
//TaskKeyHook.h
//
#define DLLIMPORT __declspec(dllimport)DLLIMPORT BOOL DisableTaskKeys(BOOL bEnable, BOOL bBeep);
DLLIMPORT BOOL AreTaskKeysDisabled();
显然,他用的是_declspec(dllimport),而不是_declspec(dllexport),这是为什么?
_declspec(dllexport) int Max(int a,int b)
............这样的写法是用来导出Max函数,使调用mydll的程序可以调用Max。
但今天我看到一个dll(是一个系统级的钩子),但它在mydll.h中写的是import而不是export,这是何故?大概意思如下:
头文件
////////////////////////////////////////////////////////////////
//TaskKeyHook.h
//
#define DLLIMPORT __declspec(dllimport)DLLIMPORT BOOL DisableTaskKeys(BOOL bEnable, BOOL bBeep);
DLLIMPORT BOOL AreTaskKeysDisabled();
显然,他用的是_declspec(dllimport),而不是_declspec(dllexport),这是为什么?
DLLIMPORT BOOL AreTaskKeysDisabled();定义的是导入函数,不是导出函数!
显然,他用的是_declspec(dllimport),而不是_declspec(dllexport),这是为什么?
==========================================================================
因为它要使用某dll中的DisableTaskKeys(BOOL bEnable, BOOL bBeep);
AreTaskKeysDisabled();函数,当然要导入否则,编译时,会提示这两个函数未知!