前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >C++创建动态库C#调用

C++创建动态库C#调用

作者头像
Vaccae
发布于 2019-07-25 03:16:17
发布于 2019-07-25 03:16:17
2.5K0
举报
文章被收录于专栏:微卡智享微卡智享

前言

最近一直在学OpenCV,因为图像处理里面用C++效率要快不少,顺便就学习了一点C++的东西,由于WinForm中的程序我主要还是用C#来做,所以今天我们就看看怎么样用C++创建动态库,然后用C#进行调用。

自己系统配置

操作系统:Win10 Home版

开发工具:VS2017

代码演示


C++动态库

1.我们打开VS2017,选择C++中Windows桌面,新建一个Cppdll的动态链接库

创建后右边的解决方案资源管理器中会出来

2.我们在头文件鼠标右键选择添加--新建项,选择新建一个Cppdll.h的头文件

3.在Cppdll.h里面声明了一个AddCount的外部调用方法,里面绿色字体要格外注意,特别是extern "C",如果不加的话C#调用时会找不到入口方法名

4.创建AddCount的实现方法,我们把鼠标放到AddCount的方法后,按ALT+ENTER弹下方的列表,选择创建"AddCount"的定义在Cppdll.cpp中

我们再打开Cppdll.cpp的文件后,可以看到AddCount的实现方法在这里面已经出来了。

5.写AddCount的实现方法,输出其实很简单,我们把输入的两个结果加到一起就好了。

然后生成解决方案,我们的C++动态库就已经完成。


C#调用程序

  1. 鼠标右键在解决方案中点击,新建个名称为CppImport的C#窗体应用程序

2.在窗体中建一个TextBox和一个按钮Button

3.代码中写调用C++动态库的方法

DllImport为调用方法,里面第一个参数就是动态库名称,EntryPoint为入口的函数名,就是我们C++动态库里写的AddCount的方法,CallingConvention是调用的协议。因为有了EntryPoint的属性说明,所以我们可以自己定义新的函数名称为GetNewInt了,不过参数要一致即可。

4.实现点击按钮,生成两个随机数然后得到加起来的值。

5.修改C#应用程序的平台目标(重点),这里必须改为x86也就是32位的平,要不会调用报错。

6.我们再重新生成解决方案后,把C++生成的DLL拷贝到CSharp的程序目录下,然后即可以运行看看效果了


下面我们看一下运行结果,我多点几次

-END-

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-02-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微卡智享 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
C++创建动态库C#调用(二)----回调函数的使用
上一篇《C++创建动态库C#调用》我们练习了C++写的动态库用C#的调用方法,后来研究回调函数这块,就想练习一下回调函数的使用,学习并巩固一下,话不多说,我们直接开始。
Vaccae
2019/07/25
3.6K0
VS2017下创建C++动态库导出符合并完成调用测试(DLL可供C#调用)
使用VS2017项目模板创建C++动态库生成工程,生成动态库。然后再创建一个C++工程调用动态库完成测试。
DS小龙哥
2022/01/17
1.2K0
VS2017下创建C++动态库导出符合并完成调用测试(DLL可供C#调用)
C#调用C++动态库接口函数和回调函数
需求: 当前C++已经写好了一个动态库,完成了产品开发需求,C#需要调用C++编写的动态库DLL接口,开发出完整的软件,DLL动态库里包含了普通接口函数,回调函数。
DS小龙哥
2022/05/23
2.9K0
C#调用C++动态库接口函数和回调函数
Qt创建动态库给C#调用,通过回调完成交互
在windows下做应用开发时,经常需要多种不同的语言混合编程。比如:利用Qt开发一个动态库,给C#调用。
DS小龙哥
2022/09/23
2.2K0
Qt创建动态库给C#调用,通过回调完成交互
VS2017生成DLL(C语言)文件并在C#中使用
下面我们将在VS2017生成dll文件(动态库文件)和lib文件(静态库文件),这里以C语言为例,用最简单的例子,来让读者了解如何生成dll文件(动态库文件)
zls365
2021/01/28
2.4K0
VS2010编写动态链接库DLL和单元测试,转让DLL测试的正确性
本文将创建一个简单的动态库-link,谱写控制台应用程序使用该动态链接库,该动态链接库为“JAVA调用动态链接库DLL之JNative学习”中使用的DLL,仅仅是项目及文件名不同。
全栈程序员站长
2022/07/05
1.4K0
VS2010编写动态链接库DLL和单元测试,转让DLL测试的正确性
c#封装动态库_nginx调用so动态库
一直对动态库的封装理解不是很透彻,虽然之前写过一个Demo,不过并没有真正的理解。所以写下来,帮助自己理解下。
全栈程序员站长
2022/11/14
2.8K0
c#封装动态库_nginx调用so动态库
lib文件和dll文件的区别_dll2lib
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/167993.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/20
3K0
VS2015中用C++创建MFC DLL动态库「建议收藏」
2 点击下一步,在应用程序设置里选择带静态链接的MFC规则,这个主要为了以静态库的形式生成MFC dll,便于动态库可以移植到其它编程语言或者其它计算机系统里调用。
全栈程序员站长
2022/11/11
1.9K0
vs生成动态库及使用动态库
3.新建source.def (是为了在不同编译环境下都可以使用)
全栈程序员站长
2022/11/09
2.6K0
vs生成动态库及使用动态库
文本分类学习 (十)构造机器学习Libsvm 的C# wrapper(调用c/c++动态链接库)
前言: 对于SVM的了解,看前辈写的博客加上读论文对于SVM的皮毛知识总算有点了解,比如线性分类器,和求凸二次规划中用到的高等数学知识。然而SVM最核心的地方应该在于核函数和求关于α函数的极值的方法:SMO算法(当然还有很多别的算法。libsvm使用的是SMO,SMO算法也是最高效和简单的),还有松弛变量。。毕设答辩在即,这两个难点只能拖到后面慢慢去研究了。 
ShenduCC
2018/08/01
1.1K0
文本分类学习  (十)构造机器学习Libsvm 的C# wrapper(调用c/c++动态链接库)
c++动态库和静态库的区别_静态库里面包含动态库
C++静态库与动态库
全栈程序员站长
2022/11/11
2K0
【C 语言】动态库封装与设计 ( 动态库调用环境搭建 | 创建应用 | 拷贝动态库相关文件到源码路径 | 导入头文件 | 配置动态库引用 | 调用动态库中的函数 )
将 动态库的 描述文件 xxx.lib , 动态库文件 xxx.dll , 动态库头文件 xxx.h , 拷贝到 项目的源码路径中 , 注意就是主函数源码所在的目录 ;
韩曙亮
2023/03/30
2.3K0
【C 语言】动态库封装与设计 ( 动态库调用环境搭建 | 创建应用 | 拷贝动态库相关文件到源码路径 | 导入头文件 | 配置动态库引用 | 调用动态库中的函数 )
C#使用Tesseract C++ API过程记录
Tesseract 是一个开源的光学字符识别(OCR)引擎,最初由 Hewlett-Packard(惠普)实验室开发,后来由 Google 收购并继续维护和开源贡献。Tesseract 可以识别多种语言的文字,广泛应用于将图片或扫描文档中的文本内容转换成可编辑的文本格式。随着深度学习技术的发展,Tesseract 也整合了基于深度神经网络的 OCR 模型,提升其识别准确率,特别是对于复杂排版和手写体的识别效果有所改善。
郑子铭
2025/02/19
1080
C#使用Tesseract C++ API过程记录
C#调用C++代码,以OpenCV为例
使用C#调用C++代码是一个很常见的需求,因此本文以知名的C++机器视觉库OpenCV为例,说明在C#中如何通过使用P/Invoke(平台调用)来调用C++代码。只是以OpenCV为例,实际上在C#中使用OpenCV可以使用OpenCVSharp这个项目,这是一个很优秀的项目,GitHub地址:https://github.com/shimat/opencvsharp。
郑子铭
2025/02/18
1080
C#调用C++代码,以OpenCV为例
c#开发的客户端,如何调用c++开发的sdk dll库
c#客户端不能直接调用c++ dll,需要做2个黏合层把它们连接起来,这里以trtc sdk的dll为例
Tomas7571
2021/05/14
5.5K0
c#开发的客户端,如何调用c++开发的sdk dll库
C++动态库和静态库_动态库和静态库调用方法
从事软件工作也有两年了,C++静态库和动态库也用了不少,但都是依葫芦画瓢,一直没具体去研究一下二者的区别,加载方式等,今天花时间看了几篇博客,重新学习了一下,做出如下笔记。
全栈程序员站长
2022/11/11
3.3K0
C++动态库和静态库_动态库和静态库调用方法
C#调用C++ Dll
现在项目基本都是旁边C++的哥们做好dll扔给我,然后我调用。好久之前晚上down了一份c#调用c++dll的方法,出处早已经遗忘。闲来无事,放上来好了。原作者看到后可以留言,我会把您链接放上的,帮了我很多!!!
叁金
2018/09/04
3.5K0
C++ 打包并调用动态链接库 (VS2010)
生成动态链接库 我们以vs2010为例,生成一个动态链接库,首先在VS2010中新建一个项目,选择“Win32控制台应用程序“或“Win32项目”都是可以,只要在“应用程序设置”中选择“DLL”和“空项目”就好:
chaibubble
2022/05/07
1.3K0
C++ 打包并调用动态链接库 (VS2010)
window 动态库的创建和使用
File--新建---工程--win32 Dynamic-link Library   输入工程名和位置,即可进入动态库界面。
用户4148957
2022/06/14
1.1K0
推荐阅读
相关推荐
C++创建动态库C#调用(二)----回调函数的使用
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档