动态库的另一种制作方法:
不使用_declspec(dllexport)关键字,使用.def文件
//exportFun.def 文件名随意 EXPORT add @1 //格式 函数名 @编号 <NONAME> 函数名应该就是导出的含书名,PE工具看过能对上号。可以在getprocaddress里直接用这名字 sub @2 NONAME //myDll.cpp int add(int a,int b) { return a+b; } int sub(int a,int b) { return a-b; } //入口函数,文件名随意xx.cpp #include <Windows.h> BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { switch (ul_reason_for_call) {//下边几个*发挥 case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; }
使用方法有两种:
显式调用,只需要dll文件
隐式调用,需要dll和lib文件