dll 入口函数
2014-04-21 16:50
176 查看
http://support.microsoft.com/kb/815065/zh-cn // SampleDLL.cpp // #include "stdafx.h" #define EXPORTING_DLL #include "sampleDLL.h" BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { return TRUE; } void HelloWorld() { MessageBox( NULL, TEXT("Hello World"), TEXT("In a DLL"), MB_OK); }
// File: SampleDLL.h // #ifndef INDLL_H #define INDLL_H #ifdef EXPORTING_DLL extern __declspec(dllexport) void HelloWorld() ; #else extern __declspec(dllimport) void HelloWorld() ; #endif #endif
下面的代码是一个“Win32 应用程序”项目的示例,该示例调用 SampleDLL DLL 中的导出 DLL 函数。
// SampleApp.cpp // #include "stdafx.h" #include "sampleDLL.h" int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { HelloWorld(); return 0; }
注意:在加载时动态链接中,您必须链接在生成 SampleDLL 项目时创建的 SampleDLL.lib 导入库。
在运行时动态链接中,您应使用与以下代码类似的代码来调用 SampleDLL.dll 导出 DLL 函数。
... typedef VOID (*DLLPROC) (LPTSTR); ... HINSTANCE hinstDLL; DLLPROC HelloWorld; BOOL fFreeDLL; hinstDLL = LoadLibrary("sampleDLL.dll"); if (hinstDLL != NULL) { HelloWorld = (DLLPROC) GetProcAddress(hinstDLL, "HelloWorld"); if (HelloWorld != NULL) (HelloWorld); fFreeDLL = FreeLibrary(hinstDLL); } ...
当您编译和链接 SampleDLL 应用程序时,Windows 操作系统将按照以下顺序在下列位置中搜索 SampleDLL DLL:
应用程序文件夹
当前文件夹
Windows 系统文件夹
注意:GetSystemDirectory 函数返回 Windows 系统文件夹的路径。
Windows 文件夹
注意:GetWindowsDirectory 函数返回 Windows 文件夹的路径。
dll文件里面,有一个入口函数dllmain
另一个函数helloworld,供主调函数使用,并不出现在入口函数中
相关文章推荐
- DLL入口函数
- 关于DLL找不到函数入口点的问题
- Dll入口函数参数详解...
- DLL入口函数DllMain
- Dll入口函数参数详解...
- C++ 生成dll的入口函数
- C#调用C(C++)dll示例教程,包含dll找不到函数入口的解决办法,包含C#dll调用方式不对出错的解决办法
- DLL入口函数DllMain
- MFC DLL 的初始化入口函数:
- C#dll中无法找到c++dll中函数的入口
- Delphi 如何解决在DLL的入口函数中创建或结束线程时卡死
- vb没法定位.dll函数入口点
- Dll入口函数参数详解...
- 《Windows Via C/C++》读书笔记之dll入口函数
- Dll入口函数参数详解...
- Dll入口函数参数详解
- Dll入口函数参数详解
- DLL 入口函数
- LIB和DLL中在.h文件中声明函数的不同
- C#:WPF的启动函数和启动入口