1.创建动态库
dlltest2.cpp
int __stdcall Add(int a, int b)
{
return a + b;
}
int __stdcall Sub(int a, int b)
{
return a - b;
}
dlltest2.def
LIBRARY dlltest2.dll
EXPORTS
Add @ 1
Sub @ 2
2.动态加载动态库
#include "stdafx.h"
#include <windows.h>
typedef int(__stdcall * func)(int a, int b);
int main()
{
func fun1, fun2;
HINSTANCE hdll = LoadLibraryA("dlltest2.dll");
if (hdll == NULL)
FreeLibrary(hdll);
fun1 = (func)GetProcAddress(hdll, "Add");
fun2 = (func)GetProcAddress(hdll, (char*)(2));
int sum, sub;
if(fun1 != NULL)
sum = fun1(2, 3);
if(fun2 !=NULL)
sub = fun2(2, 3);
FreeLibrary(hdll);
return 0;
}
3.创建C接口库
#ifndef DLLTEST_H
#define DLLTEST_H
#ifdef __DLL_EXPORTS__
#define DLLAPI __declspec(dllexport)
#else
#define DLLAPI __declspec(dllimport)
#endif
#ifdef __cplusplus
extern "C"
{
#endif
DLLAPI int add(int a, int b);
#ifdef __cplusplus
}
#endif
#endif // DLLTEST_H
#include "dlltest.h"
int add(int a, int b)
{
return a + b;
}