1、创建
新建一个动态链接库的工程
在dllmain.cpp中添加代码
//extern "C"//按照C语言的编程规范
//_declspec(dllexport) //告诉编译器这个函数要导出
//上面的代码也可以改成在Source.def 中添加以下代码
//LIBRARY
//EXPORTS
// ave_1
int ave_1(int a, int b)
{
return (a + b) / 2;
}
extern "C"//按照C语言的编程规范
_declspec(dllexport) //告诉编译器这个函数要导出
int _stdcall ave(int a, int b)//__stdcall
{
return (a+b) * 2;
}
2、使用
创建一个控制台引用工程
#include <iostream>
#include <Windows.h>
typedef int (*FAVE_1)(int a, int b);//自己定义函数指针
typedef int (WINAPI* FAVE)(int a, int b);
int main()
{
//加载模块到内存空间里面来
HMODULE hmod = LoadLibraryA("CreatDll.dll");
if (hmod)
{
std::cout << "模块加载成功!" << std::endl;
//读取导出表,得到函数的地址
FAVE_1 func = (FAVE_1)GetProcAddress(hmod, "ave_1");
FAVE funcAve = (FAVE_1)GetProcAddress(hmod, "ave");
if (func)
{
std::cout << "函数加载成功!" << std::endl;
std::cout << func(100,200) << std::endl;//(a+b) / 2
std::cout << funcAve(100, 200) << std::endl;//(a+b) * 2
if (FreeLibrary(hmod)) std::cout << "动态链接库释放成功!" << std::endl;
;
}
}
}