>>>>>>dll工程
选择win32控制台程序,选择dll工程。
或者MFC dll工程,
MFC dll工程的动态链接库,全局函数可以调用,类成员函数不能。
调用动态链接库中类成员函数的方法有2个,
1.可以用全局函数调用成员函数的方法实现。
2.想让类的成员函数导出,可以导出整个类,public的成员都会被导出。
>>>>>>>>dll编写
在代码前加上extern "C" int __declspec(dllexport)add(int x, int y);
//此处的int为导出函数返回类型。
//__declspec : 标明add函数为dll导出函数。
下面是一个formatmessage函数的dll编写
#include "stdafx.h"
#include "iostream"
using namespace std;
extern "C" int __declspec(dllexport)ShowErrorMessage(int x);
extern "C" void __declspec(dllexport)haha(int x,int y);
int ShowErrorMessage(int err_number)
{
LPVOID lpMsgBuf;
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
err_number,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR)&lpMsgBuf,
0,
NULL);
MessageBox(NULL,(LPCTSTR)lpMsgBuf,TEXT("L->error"),MB_OK);
LocalFree(lpMsgBuf);
return 0;
}
>>>>>>>>编译成dll
>>>>>>>>加载
HINSTANCE hInst;
hInst = LoadLibrary(_T("C:\\Users\\lwj\\Documents\\Visual Studio 2010\\Projects\\2\\3.dll"));
typedef int (*MYFUN)(int a); //定义函数指针类型 ,此处int导出函数类型。
MYFUN fun = (MYFUN)GetProcAddress(hInst,"luan");
fun(7);
释放dll