引用:
原帖由 regedit 于 2008-7-26 10:10 发表 
具体DLL里面的函数是怎样执行的?我用你的程序调用我自己写的 DLL,不知道怎么执行里面的函数?(DLL是用delphi写的)
我的DLL是C++写的,在C++中,DLL的入口函数是DllMain,定义如下:
复制内容到剪贴板
代码:
BOOL WINAPI DllMain(
HINSTANCE hinstDLL, // handle to the DLL module
DWORD fdwReason, // reason for calling function
LPVOID lpvReserved // reserved
);hinstDll 是DLL实例句柄,fdwReason 是调用DLL的原因的标志,lpvReserved 是保留参数。
fdwReason 有四种DLL_PROCESS_ATTACH、DLL_THREAD_ATTACH、DLL_THREAD_DETACH 和 DLL_PROCESS_DETACH。
其中,进程将DLL加载到内存时会传递DLL_PROCESS_ATTACH,所以我在程序中定义了一个线程函数,并判断,当fdwReason的值为DLL_PROCESS_ATTACH时就调用CreateThread创建了一个新线程来执行线程函数中的代码。
我没有用过Delphi,但我在网上查了下,Delphi 中,DLL的入口函数如下:
procedure DllEnterPoint(dwReason: DWORD);far;stdcall;
参数dwReason 和C++中完全一样,所以我认为可以用这种思路来实现。
我的DLL的源码我已经发在17楼的,有兴趣可以看下。