C++封装DLL并调用

c++动态链接库dll的封装和调用 上面用三种方法创建了导出函数,_declspec(dllexport)修饰函数,_declspec(dllexport)修饰类,在def文件中进行声明。在属性->vc++目录->库目录这里选择 lib文件生成的目录 ,写进去,这样我们的程序才能找到对应的lib文件。将反复使用的函数,或者多个项目都会共同调用的模块封装成一个库函数让项目去调用。来说明需要导出的模块,修饰符:__declspec(dllexport)在连接器->输入那里,选择我们要调用的lib文件。,这个函数能进行导出,其他的程序能进行调用, 阅读详情

身为学渣,总是学完就忘,所以写下来方便自己以后查看,也是为其他小白提供一点思路。

参考的资料:http://blog.csdn.NET/u011221078/article/details/41308217

http://blog.sina.com.cn/s/blog_7939cf980102v052.html


一、生成DLL

VS2013——建立win32项目——DLL——完成

[cpp]  view plain  copy
  1. //maopao.cpp  
  2.   
  3. #include "stdafx.h"  
  4.   
  5. //关键在于加入这一句,意为将C语言下的程序导出为DLL  
  6.   
  7. extern "C"_declspec(dllexport) void maopao(int *p,int count);  
  8.   
  9. void maopao(int *p,int count)  
  10.   
  11. {  
  12.   
  13.       int temp=0;  
  14.   
  15.       for(int i=1;i<count;i++)  
  16.   
  17.       {  
  18.   
  19.           for(int j=count-1;j>=i;j--)  
  20.   
  21.         {  
  22.   
  23.             if(p[j]>p[j-1])  
  24.   
  25.             {  
  26.   
  27.                 temp=p[j];  
  28.   
  29.                 p[j]=p[j-1];  
  30.   
  31.                 p[j-1]=temp;  
  32.   
  33.             }  
  34.   
  35.         }  
  36.   
  37.       }  
  38.   
  39. }  


编译生成,在Debug文件下生成了.dll和.lib两个文件;


二、调用DLL

VS2013——建立win32控制台项目——完成

把第一步生成的.dll和.lib两个文件拷入控制台程序的Debug文件夹下

添加引用:

项目——属性——链接器——常规——附加库目录——添加dll

项目——属性——链接器——输入——附加依赖项——添加lib


[cpp]  view plain  copy
  1. #include<iostream>  
  2.   
  3. #include<time.h>  
  4.   
  5. using namespace std;  
  6.   
  7. //将export改为import即导出变导入即可  
  8.   
  9. extern "C"_declspec(dllimport) void maopao(int *p,int count);  
  10.   
  11. int main()  
  12.   
  13. {  
  14.   
  15.   int a[10];  
  16.   
  17.   srand(time(0));  
  18.   
  19.   for(int i=0;i<10;i++)  
  20.   
  21.       a[i]=rand()%50;  
  22.   
  23.   maopao(a,10);  
  24.   
  25.    for(int i=0;i<10;i++)  
  26.   
  27.        cout<<a[i]<<endl;  
  28.   
  29.    getchar();//为方便调试  
  30.   
  31.    return 0;  
  32.   
  33. }  

运行OK ~
C++ 如何封装代码成DLL 动态链接库供其他项目或编程语言使用 本文介绍了如何封装C++代码为动态链接库DLL文件,介绍了如果配置工程及调用。实例DLL中有两个函数,一个是无参无返回值的打印函数,另外一个为有参,有返回值的函数,第二个函数我们留在C# 如何调用C++ DLL文件中。 阅读详情

相关推荐

【C++】封装 调用 dll / lib

笔记用,有错误欢迎指出,谢谢。 一、lib文件 静态链接库文件,需要在主程序编译时一起编译生成exe。 二、dll文件 动态链接库文件,可在程序运行时才调用,无需编译时一起打包。 三、封装和调用 lib/dll文件 1、lib 文件的封装和 dll 类似,在导出时选则即可。 2、打包生成 lib 文件时,只会生成 .lib(大小较大)文件。 调用 .lib,需要 .h + .lib;因为有头文件,调用时正常使用头文件中函数即可。 3、打包生成 dll 文件时,会生成 .lib(大小较小).

ckm1016245307的博客 4747

C++程序封装为动态链接库(dll文件)及使用

把C++程序打包为动态链接库(dll文件)给别人,这样别人只能通过我们定义的接口函数实现程序的功能,而无法知道程序的具体实现代码。

powpowbing的博客 9105

Unity中C#调用C++封装的dll,接收并传递结构体数组指针(类和结构体)

项目所需,需要在unity中调用C++封装的dll,需要传递结构体数组。C++中封装的函数的参数为结构体指针。在网上找了一下博客,然后结合MSDN上的C#编程参考手册,找到了方法。 DLL的创建 这里创建了一个.h文件,声明了很简单两个结构体和一个类,类中还声明了一个Vector6D的数组,没有使用更复杂的结构体。 //StructTest.h #ifndef _STRUCTTEST_H_ #define _STRUCTTEST_H_ #include <iostream> #include &

JSBYWUYR的博客 2980

【C++】C++封装成DLL并调用(初学者快速入门)

话不多说,干货走起!!!!!!!****(侵删) 使用vs2019将C++封装成DLL并调用主要有以下几个步骤: 1)新建工程,编写要封装的.cpp和.h文件; 2) 生成动态链接库.dll和静态链接库.lib; 3) 调用通过.h文件调用; 第一步:编写.cpp和.h文件 本例工程名称为RunLIB .cpp如下: #include "pch.h" #include<iostream> class FHello :public IInterface { public: FHello();

测试开发自动化 4万+

(C++实例)在VS中封装DLL并调用

dll通常包含的是多个程序都能用到的代码和数据,在大多数情况下可以理解为对多个通用函数进行封装,所以生成dll的代码是没有main函数的,只有通用函数的声明和定义。

qq_43199575的博客 2159

YOLOv11 改进策略:引入 NWD 损失函数提高小目标检测精度

YOLO(You Only Look Once)是一种实时目标检测算法,能够有效地预测图像中多个物体的边界框和类别概率。其高效性使它成为自动驾驶、视频监控等领域的理想选择。NWD 是一种基于 Wasserstein 距离的损失函数,其通过归一化处理,更好地评估预测框和真实框之间的几何偏差。这种方法不仅仅关注重叠区域,而且考虑中心点和尺度信息,提高了对小目标的敏感度。

走向CTO的路上... 2001

windows系统 C++调用自己lightgbm模型,并封装为dll

C++调用lightgbm模型的那些事

qq_25993375的博客 2239

Jenkins Job DSL:用代码管理CI/CD配置的实践指南

Jenkins 是持续集成(CI)领域的经典开源平台,其核心价值在于自动化构建与交付流程。然而传统 UI 配置方式导致配置不可版本化、难以复现、审计困难,严重制约团队规模化协作效率。Job DSL 作为一种声明式配置即代码(IaC)方案,通过 Groovy 脚本驱动 Jenkins 内部 API,实现 Job、View、Folder 等资源的程序化创建与维护,天然支持 Git 版本控制、权限审计与环境一致性保障。它不替代 Pipeline,而是与其协同构成‘流程定义’与‘基础设施定义’双轨体系,显著提升 C

weixin_33744141的博客 518

使用C++/CLI封装C++ DLL并在C#界面中调用方法

本文详细介绍了将64位C++ DLL封装为C++/CLI类库并在C# Windows Forms应用中调用的全过程。通过六个清晰步骤:准备开发环境、创建解决方案、配置项目、编写包装代码、构建C#界面及测试运行,指导开发者实现从底层DLL到上层界面的完整调用流程。关键点包括正确配置项目属性、创建托管包装类、处理DLL依赖关系等。以CameraManager的initCameras()方法为例,展示了从C++到C#的跨语言调用实现,确保开发者能快速掌握这一混合编程技术。

Geosen_Jira的博客 1101

STM32F103C8T6 + GY-906红外测温:手把手教你用CubeMX和HAL库搞定IIC驱动(附完整工程)

本文详细介绍了如何使用STM32F103C8T6和GY-906红外测温传感器(基于MLX90614芯片)实现非接触式温度测量。从STM32CubeMX工程创建、HAL库驱动适配到温度数据采集与处理,提供完整的开发流程和常见问题解决方案,帮助开发者快速掌握红外测温技术。

weixin_29188043的博客 253

在macOS上使用GitHub的超详细指南

GitHub:免费的远程仓库,可用来托管自己的开源项目。它利用了Git强大的克隆和分支功能,让我们参与别人的开源项目和让别人参与自己的开源项目变得简单高效。

Mars的博客 3390

Qt封装C++DLL库并调用

Qt封装C++DLL库并调用配置封装DLL库调用封装的DLL库 配置 QT5.13.0 + MinGW 32 封装DLL库 调用封装的DLL库

LH_1123的博客 1622

《Python星球日记》 第72天:问答系统与信息检索

《Python星球日记》 第72天:问答系统与信息检索,在前面的日子里,我们学习了自然语言处理的基础知识,包括文本预处理、词向量、Transformer架构和各种预训练模型。今天,我们将探索问答系统这一NLP的重要应用,以及如何结合信息检索技术构建智能问答系统。

Code_流苏:在代码中寻诗意,在实践中觅真知 1073

C++ 通过 CLR 方式封装原生 C++ DLL,并由 C 调用

C++ 通过 CLR 方式封装原生 C++ DLL,并由 C# 调用 去发现同类优质开源项目:https://gitcode.com/ 介绍 本项目为演示如何通过 C++ CLR 封装原生 C++ DLL,并由 C# 项目进行调用的示例。其中包含三个主要部分:纯 C++ DLL (dll_test_cpp),C++ CLR 项目 (dll_test_net),以及调用 CLR DLL 的 C# 项...

gitblog_06749的博客 282

车载以太网网络测试-27【SOME/IP-SD简述】

SOME/IP-SD协议是基于IP的可扩展面向服务中间件中的服务发现协议,是汽车电子和嵌入式系统中实现动态服务发现与通信的核心组件。该协议规范详细说明了协议SOME/IP服务发现(SOME/IP-SD)的格式、消息序列和语义。本文将对SOME/IP-SD协议进行详细介绍。

车载网络测试工程师的博客 1953

京东/淘宝商品评论情感分析:基于Python的大规模评论爬取与NLP情感分析实战

在当今电商蓬勃发展的时代,用户评论已成为影响消费者购买决策的关键因素。本文将详细介绍如何使用Python最新技术栈爬取京东和淘宝商品评论,并运用先进的自然语言处理技术对评论进行情感分析,识别用户的好评与差评倾向。通过完整的代码实现和深入的技术解析,帮助读者掌握从数据采集到情感分析的全流程。本文详细介绍了如何使用Python最新技术栈实现京东和淘宝商品评论的爬取与情感分析。通过结合异步爬虫、反爬策略、BERT情感分析等先进技术,我们构建了一个完整的评论分析系统。高效爬取。

2201_76125261的博客 1402

将C++源码封装为DLL文件,并提供给接口进行调用

一:封装DLL文件: 在Visual Studio中创建工程时,选择动态链接库: pch.h文件中包含所需的头文件以及库文件(opencv)、以及宏定义、需要到导出的库函数的声明。 dllmian.cpp文件中包含要导出文件中函数的实现。 右键工程“opencv_build”,然后点击生成: 在当前工程项目下的x64/Debug目录下就会生成opencv_build.dll文件至此DLL文件就生成了 二.测试DLL文件 创建一个测试C++的工程,代码如下,包含刚才生成DLL文件中的pch.h头文

qq_43593204的博客 1537

“华为杯”研究生数学建模竞赛2020年-【华为杯】D题:无人机集群协同对抗(附获奖论文和MATLAB代码实现)

1.问题重述摘 要:本文针对非线性约束条件下红蓝双方无人机集群协同对抗的最优规划问题,结合贪婪队形、非线性规划、内点法、蒙特卡洛方法和全联立正交配置有限元法,构建了无人机集群协同对抗推演模型。,构建了。我们综合考虑了,和。首先分析红方在集群约束下的贪婪队形和拦截策略,然后我们基于内点法联合MATLAB和AMPL编程求解蓝方突防的非线性规划解,最后基于蒙特卡洛法对整个蓝方突防过程进行推演,得到突防概率图。通过推演,我们提出了两块的区域作为所求区域,并对蓝方的最优突防策略进行分析。

getusushu的博客 1550

将C++源码封装为dll,并提供接口给调用

一、前言        本文主要记录将某个cpp函数在vs上封装为dll ,并在另一cpp中调用该dll 接口。 二、欲封装的源码 //MOG_BGS3.h #include "opencv2/core/core.hpp" #include #include"cv.h" #include using namespace cv; namespace OurMogBgs{ class

AP1005834的博客 8935

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

C++代码封装DLL动态库并调用

一、封装项目代码一、封装项目代码。

weixin_48555600的博客 902

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

C#封装成DLL,并在C#中调用以及C++封装的DLL在C#中调用

C#封装成DLL,并在C#中调用以及C++封装成DLL在C#中调用 C#封装的DLL是非标准的DLL(托管类),不可以用 DllImport 调用,DllImport是用来调用标准类(非托管类)的,这类DLL一般是用C++写的。封装成DLL时程序集名字要跟封装程序里的 namespace 命名一致,如下图,否则应用DLL时无法引用成功

weixin_46069887的博客 3645

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【C++随记】把窗体封装到DLL中并调用

现在最常看见的关于DLL的问题就是如何在DLL中使用对话框,这是一个很普遍的关于如何在DLL中使用资源的问题。这里我们从Win32 DLL和MFC DLL两个方面来分析并解决这个问题。

kewaqi618的博客 1496

如何使用VS2013将C++派生类封装成DLL并动态调用

如果源程序中C++的基类和由该基类生成的多个派生类在同一头文件和cpp文件下,要想将派生类编译成DLL使用,需要分别将每个派生类单独编译成DLL,再建立一个测试工程动态调用生成的DLL。

Blateyang的博客 4649

学习使用C++封装DLL并调用

一、生成DLL VS2013——建立win32项目——DLL——完成 [cpp] view plain copy //maopao.cpp      #include "stdafx.h"      //关键在于加入这一句,意为将C语言下的程序导出为DLL      extern "C"_declspec(dllexport) 

LHHopencv的博客 973
上一篇: 方差、标准差、均方差、均方误差区别总结
下一篇: error: Setup script exited with error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
2014wzy
博客等级 码龄13年 759粉丝 85原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值