文档章节

C/C++动态链接库dll创建与调用

LoSingSang
 LoSingSang
发布于 02/25 23:12
字数 522
阅读 73
收藏 0

从上篇博文大家已经了解了静态链接库lib的使用方法,这篇将介绍动态链接库dll的创建和调用方法。

学习静态链接库lib传送门

那么我们开始吧!

以下实验为Visual C++ 6.0环境

1.如图设置,确定,一路默认

2.在.h和.cpp文件中添加如下图所示代码,代码为:

//MFC_dll.h
//声明导出函数,extern "C"_declspec(dllexport)  2017.11.19 14:08--LGL
extern "C"_declspec(dllexport) int add(int x,int y);
//MFC_dll.cpp
//实现导出函数,extern "C"_declspec(dllexport)  2017.11.19 14:08--LGL
extern "C" __declspec(dllexport) add(int x,int y){
	printf("123456:");
	return (x+y);
}
/*
	编译后在debug文件夹下的.dll和.lib,以及工程目录下的.h头文件,放到新的工程目录下
*/

3.编译,在debug文件夹下的.dll、.lib和工程目录下的.h文件是我们所需要的,以上动态链接库dll就创建完成了。

4.新建32控制台程序,创建.h和.cpp文件,把刚才的.dll、.lib和.h文件放到该控制台工程目录下。

5.在刚才创建.h和.cpp文件,输入如下图代码,代码为:

//test.h
#pragma comment(lib,"MFC_dll.lib")	//包含lib
extern "C" _declspec(dllimport) int add(int a,int b); //声明导入函数,extern "C" _declspec(dllimport)
//test.cpp
#include
#include "test.h"	//头文件

int main()
{
	printf("%d\n",add(10,3));	//直接调用

	getchar(); 
	return 0;
}

6.编译,运行,如下如

 

以上,就是动态链接库dll的创建与调用方法。需要注意的是,当.exe应用程序运行时无论是在debug还是release下,该程序目录下都需要有我们刚刚创建的.dll文件,否则出现如下图提示丢失.dll,下图为在发布版release模式下打开.exe文件:

此时,需要把工程目录下的.dll文件,复制到该.exe程序所在的目录下,这样运行才不会出错,如下图:

 

有关动态链接库的使用方法及注意事项就到这里。

测试文件打包:动态库dll测试

© 著作权归作者所有

共有 人打赏支持
LoSingSang
粉丝 3
博文 25
码字总数 4161
作品 0
深圳
程序员
基于Visual C++6.0的DLL编程实现

基于Visual C++6.0的DLL编程实现 一、前言 自从微软推出16位的Windows操作系统起,此后每种版本的Windows操作系统都非常依赖于动态链接库(DLL)中的函数和数据,实际上 Windows操作系统中几乎...

晨曦之光
2012/03/09
0
0
在VC中创建DLL文件的方法步骤

在VC中创建DLL文件的方法步骤 今天教大家在VC中创建DLL文件的方法步骤,一起来学习一下,并不是很难的,相信聪明的你一看就会。 一.Win32动态链接库 1.制作的步骤: (1)新建WIN32 Dynamic-l...

晨曦之光
2012/03/09
0
0
如何为Android,Mac和Windows平台创建Java JNI动态链接库

Java Native Interface (JNI) 是Java和C/C++之间的桥梁。在一些情况下,为了提高Java程序的性能,扩展Java程序的功能,我们需要使用JNI。比如数据库的调用,当我们下载一个JDBC的jar包之后,...

yushulx
2014/09/17
0
0
2014百度校园招聘软件研发类笔试(深圳)

时间:2013年9月28日。 地点:深圳 职位:软件研发 问答题:(10*3) 1.动态链接库(DLL)与静态链接库(lib)的优缺点: 静态链接库和动态链接库都是共享代码的方式,如果采用静态链接库,则无...

SibylY
2013/09/28
0
0
VC++动态链接库(DLL)编程[精]

1.概论   先来阐述一下DLL(Dynamic Linkable Library)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量、函数或类。在仓库的发展史上经历了“无库-静态链接库...

barsoom
2012/12/07
0
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

基于TP5的微信的公众号获取登录用户信息

之前讲过微信的公众号自动登录的菜单配置,这次记录一下在TP5项目中获取自动登录的用户信息并存到数据库的操作 基本的流程为:微信设置自动登录的菜单—>访问的URL指定的函数里获取用户信息—...

月夜中徘徊
今天
0
0
youTrack

package jetbrains.teamsys.license.runtime; 计算lis package jetbrains.ring.license.reader; 验证lis 安装后先不要生成lis,要把相关文件进行替换 ring-license-checker-1.0.41.jar char......

max佩恩
今天
0
0
12.17 Nginx负载均衡

Nginx负载均衡 下面的dig看到可以返回2个IP,就是解析出来的IP,这样我们可以做负载均衡。 dig www.qq.com 1.vim /usr/local/nginx/conf/vhost/fuzai.conf 2.添加如下配置 upstream qq //定义...

芬野de博客
今天
0
0
SSE(Server Send Event 服务端发送事件)

package com.example.demo.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframe......

Canaan_
今天
0
0
jvm调优

1.jvm运行模式 client模式:启动快,占用内存少,jit编译器生成代码的速度也更快. server模式:主要优势在于代码优化功能,这个功能对于服务器应用而言尤其重要. tiered server模式:结合了client与...

Funcy1122
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部