使用WDK编译环境编译应用程序build命令(动态库程序)

TARGETNAME=dll
TARGETTYPE= DYNLINK

SOURCES=dll.cpp \

USE_MSVCRT = 1

TARGETLIBS=$(SDK_LIB_PATH)\gdi32.lib    \
  $(SDK_LIB_PATH)\user32.lib   \
           $(SDK_LIB_PATH)\kernel32.lib \
      $(SDK_LIB_PATH)\Ntdll.lib \


sources文件内容,注意类型为DYNLINK


!INCLUDE $(NTMAKEENV)\makefile.def

makefile内容


dll.cpp源文件内容

#include "Windows.h"


int Add(int a, int b)
{
return a+b;
}


BOOL WINAPI DllMain(
  HINSTANCE hinstDLL,  // handle to the DLL module
  DWORD fdwReason,     // reason for calling function
  LPVOID lpvReserved   // reserved
)
{
switch(fdwReason)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
MessageBox(NULL, TEXT("Load Dll"), TEXT("Load Dll"), MB_OK);
break;
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
MessageBox(NULL, TEXT("Unload Dll"), TEXT("Unload Dll"), MB_OK);
break;
}
return TRUE;
}


dll.def文件内容

LIBRARY dll
EXPORTS Add @1 


编译方法:

将上面的文件分别保存为: sources、makefile、dll.cpp、dll.def然后打开WDK编译环境切换到存放文件目录下执行build -c就可以生成一个dll.dll文件,里面有一个导出函数Add


说明:在引用动态库的导出函数时采用__stdcall调用约定方式

你可能感兴趣的:(使用WDK编译环境编译应用程序build命令(动态库程序))