今天学习了DLL和EXE函数的相互调用,记录如下。
EXE程序代码:
#include "stdafx.h"
#include<Windows.h>
#define EXPORT __declspec(dllexport) //这里定义一个宏,作声明导出函数用的,我们在其它程序或DLL中GetProcAddress才可能成功。
#pragma comment(lib,"kernel32.lib")
extern "C" EXPORT void ExeFn()
{
MessageBox(NULL,L"exe function called!",L"FromExe",MB_OK);
}
int _tmain(int argc, _TCHAR* argv[])
{
FARPROC FnPtr;
HMODULE hDll=LoadLibrary(L"12.dll");
if(hDll){
FnPtr=GetProcAddress(hDll,"?FnDll@@YAXXZ"); //这里就是调用DLL中的函数FnDll,因为编译的时候函数名会解析成?FnDll@@YAXXZ,所以要这样写才能找到函数入口;
if(FnPtr){