1.动态调用(晚绑定)
//DLL中定义函数为:
extern "C"
int __declspec(dllexport) tulip(int numa, int numb)
{
return numa-numb;
}
//定义一个函数指针
typedef int (* TULIPFUNC)(int a, int b);
//定义一个函数指针变量
TULIPFUNC tulipFunc;
//加载DLL
HINSTANCE hinst = ::LoadLibrary("DllTest.dll");
//获取函数地址
tulipFunc = (TULIPFUNC)GetProcAddress(hinst, "tulip");
//调用DLL里的函数
tulipFunc(2, 4);
//释放DLL
::FreeLibrary(hinst);
2.静态调用(早绑定)
在调用程序的.cpp源代码文件中按如下流程调用:
//添加头文件
#include "DllTest.h"
//告诉编译器与 DLL 相对应的.lib 文件所在的路径及文件名
#pragma comment(lib, "DllTest.lib")
extern "C" int _declspec(dllimport) tulip(int a, int b);
int main()
{
int result = tulip(2, 4);
return result;
}
//DLL中定义函数为:
extern "C"
int __declspec(dllexport) tulip(int numa, int numb)
{
return numa-numb;
}
//定义一个函数指针
typedef int (* TULIPFUNC)(int a, int b);
//定义一个函数指针变量
TULIPFUNC tulipFunc;
//加载DLL
HINSTANCE hinst = ::LoadLibrary("DllTest.dll");
//获取函数地址
tulipFunc = (TULIPFUNC)GetProcAddress(hinst, "tulip");
//调用DLL里的函数
tulipFunc(2, 4);
//释放DLL
::FreeLibrary(hinst);
2.静态调用(早绑定)
在调用程序的.cpp源代码文件中按如下流程调用:
//添加头文件
#include "DllTest.h"
//告诉编译器与 DLL 相对应的.lib 文件所在的路径及文件名
#pragma comment(lib, "DllTest.lib")
extern "C" int _declspec(dllimport) tulip(int a, int b);
int main()
{
int result = tulip(2, 4);
return result;
}