创建DLL
新建
indows ConsoleApplication,在“应用程序类型”选项中选择DLL,在“附加选项”中选择空项目,项目名称为CreateDll(自己定义),添加CreateDll.def和CreateDLl.cpp两个文件
/**********************************************/
/*FileName:CreateDll.cpp */
/**********************************************/
int add(int a, int b)
{
return a+b;
}
int subtract(int a, int b)
{
return a-b;
}
int multiple(int a, int b)
{
return a*b;
}
CreateDll.def文件内容如下:
LIBRARY CreateDll
EXPORTS
add
subtract
multiple
编译生成,会在解决方案的Debug文件夹下发现CreateDll.dll文件
动态调用DLL
新建Windows ConsoleApplication,在“附加选项”中选择空项目,(注意:先把CreateDll项目中生成的CreateDll.dll和CreateDll.lib两个文件拷贝到本项目的目录下,不是解决方案目录下),添加InvokeDll.cpp文件,内容如下
#include <stdio.h>
#include <Windows.h>
int main()
{
/*加载dll函数调用方式为默认调用方式*/
HINSTANCE hInst = LoadLibrary(L"CreateDll.dll");
if(!hInst)
{
printf("CreateDll.dll失败!\n");
}
typedef int (*CreateDllAPI)(int a, int b);
CreateDllAPI Add = (CreateDllAPI)::GetProcAddress(hInst,"add");
printf("5+3=%d\n",Add(5,3));
::FreeLibrary(hInst);
//调用dll函数调用方式为_stdcall
/*HINSTANCE hInstStd = ::LoadLibrary(L"CreateDllStd.dll");
if(!hInstStd)
{
printf("加载CreateDllStd.dll失败!\n");
}
typedef int (_stdcall *CreateDllStdAPI)(int a, int b);
CreateDllStdAPI AddStd = (CreateDllStdAPI)::GetProcAddress(hInstStd,"add");
printf("5+3=%d\n",AddStd(5,3));
::FreeLibrary(hInst);*/
return 0;
}
推荐资源下载:VS中DLL生成和静态动态调用工程