C++创建和使用动态链接库
一个简单的动态链接库的生成和调用例子,太过简单,大神请绕道。
一、创建动态链接库
使用vs创建工程选择动态链接库。
在项目中创建源文件和头文件,并在文件中添加以下代码。
在头文件中添加以下代码
// dlltest.h 头文件,使用动态链接库时需要包含头文件 #pragma once
#ifdef __DLLEXPORT
#define __DLL_EXP _declspec(dllexport) // 导出函数 - 生成dll文件时使用
#else
#define __DLL_EXP _declspec(dllimport) // 导入函数 -使用dll是使用
#endif // __DLLEXPORT // 判断是否是c++
#if defined(__cplusplus)||defined(c_plusplus)
extern "C"
{
#endif
__DLL_EXP int add(int a, int b);
__DLL_EXP int sub(int a, int b); #if defined(__cplusplus)||defined(c_plusplus)
}
#endif
在源文件文件中添加以下代码
// dlltest.cpp #include<stdio.h>
#include"dlltest.h"
#include"pch.h" int add(int a, int b)
{
return a + b;
} int sub(int a, int b)
{
return a - b;
}
在工程属性,
C/C++ => 预处理器 => 预处理定义中添加预定义宏__DLLEXPORT.在工程属性,
C/C++ => 预编译头 => 预处编译头选择不使用预编译头。编译生成dll文件和lib文件(如果没有生成lib文件,需要在工程中添加一个Source.def文件,内容为LIBRARY)。
二、使用动态链接库
1. 使用c++调用动态链接库
新建一个c++工程,包含
dlltest.h头文件,并引用生成的lib文件。添加源文件
testcpp.cpp,在源文件中输入以下代码:#include <iostream>
#include"dlltest.h" int main()
{
printf("test cpp\n");
std::cout << "Hello World!\n";
printf("3+2 = %d\n", add(3, 2));
printf("3-2 = %d\n", sub(3, 2));
}
编译,运行即可调用上面生成的动态链接库。
2.使用c调用动态链接库
新建一个c语言工程,包含
dlltest.h头文件,并引用生成的lib文件。添加源文件
testc.c,在源文件中输入以下代码:// testc.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <stdio.h>
#include "dlltest.h" int main()
{
printf("test c\n");
printf("3+2 = %d\n", add(3, 2));
printf("3-2 = %d\n", sub(3, 2));
}编译,运行即可调用上面生成的动态链接库。
C++创建和使用动态链接库的更多相关文章
- 创建和使用动态链接库 (C++)
创建和使用动态链接库 (C++) 转载:http://msdn.microsoft.com/zh-cn/library/ms235636.aspx 此分步演练演示如何创建用于 C++ 应用的动态链接库 ...
- 【转载】创建和使用动态链接库 (C++)
原文:http://blog.csdn.net/handforcpp/article/details/3478254 也可参考MSDN: 演练:创建和使用动态链接库 (C++) 我们将创建的第一种类型 ...
- VS2010创建和调用动态链接库
当我们开发一个产品的时候,我们并不想把源码公布给对方,除了给对方提供exe可执行文件外,我们还可以生成动态链接库,供程序调用,方便二次开发. 下面我将简单梳理一下如何创建和调用动态链接库,方便大家程序 ...
- 演练:创建和使用动态链接库 (C++)
我们将创建的第一种类型的库是动态链接库 (DLL). 使用 DLL 是一种重用代码的绝佳方式. 您不必在自己创建的每个程序中重新实现同一例程,而只需对这些例程编写一次,然后从需要该功能的应用程序引用它 ...
- vs2010创建和使用动态链接库(dll)
本文将创建一个简单的动态链接库,并编写一个应用台控制程序使用该动态链接库,并提出了与实现相关的几个问题,供初学者交流. 本文包含以下内容: 创建动态链接库项目 向动态链接库添加类 创建引用动态链接库的 ...
- Qt创建和使用动态链接库
一.创建共享库 1.新其他建项目,选择C++库 2.选择共享库,并取项目名称,单击下一步.这里取名位mylib 3.按默认配置单击下一步至模块选项,选择所需支持的模块.这里勾选Qtcore和QtGui ...
- vs2010 C++创建和使用动态链接库(dll)
一.用C++创建动态链接库项目: 1.打开Microsoft Visual Studio 2010,选择File->New->Project. 2.在NewProject中选择Inst ...
- VC++ 6.0如何创建与调用动态链接库
原文:http://blog.csdn.net/wanghaihao_1/article/details/51098451 1.静态链接库与动态链接库区别: 静态链接库:lib中的指令被直接包含在最终 ...
- Windows下VS2013创建与使用动态链接库(.dll)
一.创建动态链接库文件 ** 1.打开VS2013,选择文件,新建工程 2.选择新建W32控制台应用程序,这里将工程名改为makeDLL 3.在应用程序类型中选择DLL,点击完成 4.完成以上步 ...
随机推荐
- 运维笔记--linux下忘记mysql root密码
补充链接:Windows下忘记密码处理: https://www.cnblogs.com/hellojesson/p/5972950.html 场景描述: Linux环境下忘记 root 密码, 1. ...
- vue---定义全局变量或函数
开发项目的时候,有很多的东西需要重复使用,例如函数或者变量等,例如网站服务器地址,token等,这时候就需要设置一波全局变量和全局函数 定义全局函数 原理 新建一个模块文件,然后在main.js里面通 ...
- 【CUDA开发】 Check failed: error == cudaSuccess (8 vs. 0) invalid device function
最近在复现R-CNN一系列的实验时,配置代码环境真是花费了不少时间.由于对MATLAB不熟悉,实验采用的都是github上rbg大神的Python版本.在配置Faster R-CNN时,编译没有问题, ...
- 高级UI-高级渲染
在使用了Panit画笔之后,可以对其进行渲染,从而达到更加人性化的方式 渲染分类 按常用渲染方式可以分为以下几种: BimapShader位图的图像渲染器 LinearGradient线性渲染 Rad ...
- python爬虫4猫眼电影的Top100
1 查看网页结构 (1)确定需要抓取的字段 电影名称 电影主演 电影上映时间 电影评分 (2) 分析页面结构 按住f12------->点击右上角(如下图2)---->鼠标点击需要观察的字 ...
- 如何立即回收内存C#
C#如何立即回收内存 1.把对象赋值为null 2.立即调用GC.Collect(); 注意:这个也只是强制垃圾回收器去回收,但具体什么时候执行不确定. 代码: [System.Runt ...
- centos7 intall nvidia driver
此教程是介绍于 CentOS 7 以上的 Linux 系统中安装 NVIDIA 显卡驱动和 CUDA Toolkit .此文中以 CentOS 7.4 64 bit 为例,显卡型号为 NVIDIA T ...
- pip修改成国内镜像源
临时指定镜像源 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple seaborn 永久修改镜像源 linux下,修改 ~/.pip/pip ...
- INV*账户别名接收发放
DECLARE --p_old_new_flag OLD 为导出 NEW 为导入 l_iface_rec inv.mtl_transactions_interface%ROWTYPE; l_iface ...
- 24 枚举Enum类
引用声明:部分内容来自文章:http://c.biancheng.net/view/1100.html 枚举Enum类是java.lang下的一个类. 枚举的命名规范 枚举名:大驼峰 枚举值:全大写, ...