您的位置:首页 > 其它

动态链接库应用举例

2012-07-01 00:17 387 查看
既然写了静态链接库,就顺带把动态链接库也学习下。

创建一个动态链接库工程,名称为ConvertDynamicLib

在cpp文件中写入下面的代码

#include "stdafx.h"
#include <stdlib.h>
#include <windows.h>
#include <stdio.h>

BOOL APIENTRY DllMain( HANDLE hModule,
DWORD  ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}

__declspec(dllexport) void BinToDec(char* szDecOutput,char* szBinInput)
{
int nDecimal=0;
int Len=lstrlen(szBinInput);
for (int i=0;i<Len;i++)
{
char h = szBinInput[Len-1-i];
char str[1];
str[0]=h;
int j = atoi(str);
for (int k=0;k<i;k++)
{
j = j*2;
}
nDecimal = nDecimal+j;
}
sprintf(szDecOutput,"%d",nDecimal);
}

__declspec(dllexport) void OctToDec(char* szDecOutput,char* szOctInput)
{
int nLenth = lstrlen(szOctInput);

int nDecimal = 0;
for(int i=0;i<nLenth;i++)
{
char h = szOctInput[nLenth-1-i];
char str[1];
str[0] = h;
int j = atoi(str);
for(int k=0;k<i;k++)
{
j=j*8;
}
nDecimal += j;
}
sprintf(szDecOutput,"%d",nDecimal);
}


__declspec(dllexport)在这里的意思是把后面的函数作为导出函数,以便可以在其它程序中使用

编译

========================================

新建一个控制台程序,将动态链接库的dll文件和lib文件拷贝到当前的工程目录中

lib文件为编译时需要,dll为运行时需要

#include "stdafx.h"
#include <stdio.h>

#pragma comment(lib,"ConvertDynamicLib.lib")
void BinToDec(char* szDecOutput,char* szBinInput);
void OctToDec(char* szDecOutput,char* szOctInput);

int main(int argc, char* argv[])
{
char tk[256]="";
char inputsz[256]="1010101001";
BinToDec(tk,inputsz);
printf("%s\n",tk);
return 0;
}


看代码就知道,添加lib文件,声明dll中的函数

然后在main函数中调用函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: