关于dll使用的方法,留个备份,总是好事
dll 代码:
//
dll code
// compile :cl /LD *.c
#include < windows.h >
#pragma comment(lib, "user32")
__declspec(dllexport) void func()
... {
MessageBox(0, "dll func execute", "dll func", MB_OK);
}
BOOL WINAPI DllMain(HINSTANCE hinstDll, DWORD fdwReason, PVOID fImpLoad)
... {
switch(fdwReason)
...{
/**//*
#define DLL_PROCESS_ATTACH 1
#define DLL_THREAD_ATTACH 2
#define DLL_THREAD_DETACH 3
#define DLL_PROCESS_DETACH 0
*/
case DLL_PROCESS_ATTACH:
...{
MessageBox(0, "DLL_PROCESS_ATTACH", "load dll", 0);
break;
}
// 注意break
case DLL_PROCESS_DETACH:
...{
MessageBox(0, "DLL_PROCESS_DETACH", "detach dll", 0);
func();
break;
}
default:
...{
break;
}
}
return TRUE;
}
// compile :cl /LD *.c
#include < windows.h >
#pragma comment(lib, "user32")
__declspec(dllexport) void func()
... {
MessageBox(0, "dll func execute", "dll func", MB_OK);
}
BOOL WINAPI DllMain(HINSTANCE hinstDll, DWORD fdwReason, PVOID fImpLoad)
... {
switch(fdwReason)
...{
/**//*
#define DLL_PROCESS_ATTACH 1
#define DLL_THREAD_ATTACH 2
#define DLL_THREAD_DETACH 3
#define DLL_PROCESS_DETACH 0
*/
case DLL_PROCESS_ATTACH:
...{
MessageBox(0, "DLL_PROCESS_ATTACH", "load dll", 0);
break;
}
// 注意break
case DLL_PROCESS_DETACH:
...{
MessageBox(0, "DLL_PROCESS_DETACH", "detach dll", 0);
func();
break;
}
default:
...{
break;
}
}
return TRUE;
}
调用代码:
#include
<
windows.h
>
// #include "libname.h" // 貌似可以不要
#pragma comment(lib,"libname")
int main( int argc, char * argv[])
... {
HANDLE hLibTest = LoadLibrary("libname");
func(); // lib 定义
FreeLibrary(hLibTest);
return 0;
}
// #include "libname.h" // 貌似可以不要
#pragma comment(lib,"libname")
int main( int argc, char * argv[])
... {
HANDLE hLibTest = LoadLibrary("libname");
func(); // lib 定义
FreeLibrary(hLibTest);
return 0;
}