再谈Windows下使用DLL
在Windows下使用静态库和动态库中介绍了使用.h文件、.lib导出库文件、.dll文件动态链接库三件套的方式隐式链接来使用动态链接库的,后来又研究了一下显示调用的方式,遇到不少问题,在这里学习分享一蛤。
显式链接
显式链接是应用程序在执行过程中随时可以加载DLL文件,也可以随时卸载DLL文件,这是隐式链接所无法作到的,所以显式链接具有更好的灵活性,对于解释性语言更为合适。
不需要对项目进行特殊配置,直接上代码:
#include "Windows.h"
#include <iostream>
#include "AtlBase.h"
#include "AtlConv.h"
//函数指针
typedef double(*pAdd)(double, double);
typedef int( *pTest)();
int main()
{
double a = 1.2;
double b = 2.5;
//加载DLL文件,这里需要使用绝对路径,由于我事先已经将其拷贝到
//Debug目录下,因此直接给出DLL名
HINSTANCE hDll = LoadLibrary("DynamicMath.dll");
if (NULL != hDll)
{
//fnDynamicMath是DLL示例中写好的导出函数。
pTest fp1 = pTest(GetProcAddress(hDll, "fnDynamicMath"));
if (NULL!=fp1)
{
std::cout