前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >简单的动态连接库,例子

简单的动态连接库,例子

作者头像
流川疯
发布2019-01-18 14:16:32
6760
发布2019-01-18 14:16:32
举报
文章被收录于专栏:流川疯编写程序的艺术

首先,我们知道VC的三种Dll分别是

1.non_MFC Dll

2.MFC Regular Dll

3.MFC Extension Dll

平时我们使用在代码中的:

代码语言:javascript
复制
#pragma comment(lib,"Test_of_dll.lib")

的意思是指文中生成的obj文件应该与Test_of_dll.lib一起链接.或者可以在VC的工程中设置加载此lib

下面,来做一个简单动态Dll

新建一个Win32 Application,application setting中勾选Dll,完成.添加如下文件后,编译链接.

lib.h文件如下:

代码语言:javascript
复制
#ifndef LIB_H
#define LIB_H
extern "C" int __declspec(dllexport)add(int x,int y);
#endif

lib.cpp文件如下:

代码语言:javascript
复制
#include"stdafx.h"
#include"lib.h"

int add(int x,int y)
{
	return x + y;
}

之后另外新建一个工程,调用此工程生成的Dll,Test_of_nonMFCdll.dll

代码如下:

代码语言:javascript
复制
// Test_of_dllCall.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include"stdio.h"
#include"windows.h"

typedef int(*lpAddFun)(int, int);	//宏定义函数指针类型


int _tmain(int argc, _TCHAR* argv[])
{
	HINSTANCE hDll;		//Dll句柄
	lpAddFun addFun;	//函数指针
	hDll=LoadLibrary("..\\..\\Debug\\Test_of_nonMFCdll.dll");

	if(NULL!=hDll)
	{
		addFun=(lpAddFun)GetProcAddress(hDll,"add");

		if(NULL!=addFun)
		{
			int  result = addFun(2, 3);
			printf("The result of addFun is %d \n",result);
			getchar();
		}


		FreeLibrary(hDll);
	}
	return 0;
}

注意其中的路径,要根据Dll所在做变化,不然找不到相应的Dll:

代码语言:javascript
复制
hDll=LoadLibrary("..\\..\\Debug\\Test_of_nonMFCdll.dll");

调用后的结果:

代码语言:javascript
复制
The result of addFun is 5
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2012年08月21日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档