#include "stdafx.h"
#include "09DllDemo.h"
#include <stdio.h>
HMODULE g_hModule;
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
g_hModule = (HMODULE)hModule; // 保存模块句柄
break;
}
return TRUE;
}
// 自定义导出函数
void ExportFunc(LPCTSTR pszContent)
{
char sz[MAX_PATH];
::GetModuleFileName(g_hModule, sz, MAX_PATH);
::MessageBox(NULL, pszContent, strrchr(sz, '\\') + 1, MB_OK);
}
#ifdef MY09DLLDEMO_EXPORTS
#define MY09DLLDEMO_API __declspec(dllexport)
#else
#define MY09DLLDEMO_API __declspec(dllimport)
#endif
// 声明要导出的函数
MY09DLLDEMO_API void ExportFunc(LPCTSTR pszContent);
可以增加一个.def文件 里面写明要导出的函数
EXPORTS
ExportFunc
//
// ImportDemo.cpp文件
#include <windows.h>
// 声明函数原形
typedef void (*PFNEXPORTFUNC)(LPCTSTR);
int main(int argc, char* argv[])
{
// 加载DLL库
HMODULE hModule = ::LoadLibrary("09DllDemo.dll");
if(hModule != NULL)
{
// 取得ExportFunc函数的地址
PFNEXPORTFUNC mExportFunc = (PFNEXPORTFUNC)::GetProcAddress(hModule, "ExportFunc");
if(mExportFunc != NULL)
{
mExportFunc("大家好!");
}
// 卸载DLL库
::FreeLibrary (hModule);
}
return 0;
}
/*
#include <windows.h>
#include "09DllDemo.h"
// 指明要链接到09DllDemo.lib库
#pragma comment(lib, "09DllDemo")
void main()
{
// 像调用本地函数一样调用09DllDemo.dll库的导出函数
ExportFunc("大家好!");
}
*/
http://www.pythonschool.com/