C加载库文件

一种是静态加载,使用Lib文件,另一种是动态加载,使用dll文件。

例如写了一个库的项目,

导出函数的声明如下:

/*生成一个随机数p,1<=p<=x*/
extern "C" __declspec(dllexport) unsigned int RandomUINT(unsigned int x);

编译后会有*.lib和*.dll文件。

静态加载

在使用这个函数的文件中加上:

//静态链接
#pragma   comment(lib, "E:\\Test\\Debug\\xddll.lib")
extern "C" __declspec(dllexport) unsigned int RandomUINT(unsigned int x); 

然后就可以在代码中像调用本地函数一样,愉快地调用这个函数了。

动态加载

这个稍微麻烦,但是更常见一些,毕竟很多都是直接丢给你一个dll文件。

首先,你要根据函数原型,定义一个函数指针,这个不是必须的,但是会比较方便:

typedef unsigned int (*DLLRandomINT)(unsigned int);

接下来就是如何在代码中使用:

HMODULE hLib = LoadLibrary(TEXT("xddll.dll"));
DLLRandomINT rndint=(DLLRandomINT)GetProcAddress(hLib, "RandomUINT");
cout << rndint(50) << endl;

测试图省事,没有做加载调用和转换的检测(假设加载是成功的)。

你可能感兴趣的:(C加载库文件)