当前位置: 首页 > news >正文

C#|调用C/C++动态库

参考:C#总结(四)调用C++动态库(https://www.shuzhiduo.com/A/A2dmV49qze/)

文章目录

  • C#加载C动态库
  • C#加载C#动态库

涉及到的概念知识:
托管DLL和非托管DLL的区别(https://www.tinymind.net.cn/articles/87898287368798)

C#加载C动态库

 [DllImport("xxx.dll", CallingConvention = CallingConvention.Cdecl)]public static extern String HanShuMing();
  1. DllImport的第一个参数SDK是动态库dll的路径,建议在程序根目录创建一个子目录来放置相应的C/C++动态库文件,方便以后更新。

  2. CallingConvention 参数是c#调用C/C++的方式 是个枚举官方解释如下:
    在这里插入图片描述
    Winapi:此成员实际上不是调用约定,而是使用默认值平台调用约定。例如,在Windows上,默认值为System.Runtime.InteropServices.CallingConvention.StdCall在Windows CE.NET上,它是System.Runtime.InteropServices.CallingConvention.Decl。
    Cdecl:调用者清理堆栈。这允许使用varargs调用函数,使得适合用于接受可变数量的参数的方法,例如Printf。
    StdCall:被调用者清理堆栈。这是调用非托管的默认约定,具有平台调用的函数。
    ThisCall:第一个参数是this指针,并存储在寄存器ECX中。另外参数被推送到堆栈上。此调用约定用于调用方法从非托管DLL导出的类。
    FastCall:不支持此调用约定。

    C#加载C#动态库

    点击project->Add Reference…
    在这里插入图片描述
    Browse->Recent->Browse…选择一个你要加载的动态库即可。
    在这里插入图片描述
    上一步有可能出现动态库加载不进去的情况,目前我知道的可能的原因有两个,一个是没有权限,一个是该项目已经添加过相同名字的动态库,后者需要将之前添加的动态库删除再添加,如下图所示:
    点开References下找到对应动态库,删除
    在这里插入图片描述
    然后在此选择改动态库添加,点击OK即可
    在这里插入图片描述

相关文章:

C#|调用C/C++动态库

参考:C#总结(四)调用C动态库(https://www.shuzhiduo.com/A/A2dmV49qze/) 文章目录C#加载C动态库C#加载C#动态库涉及到的概念知识:托管DLL和非托管DLL的区别(https://www.tinymind.net.cn/articl…...

让chatGPT当我的老师如何? 通过和chatGPT交互式学习,了解在ES中,一条JSON数据是如何写到磁盘上的

最近一直有一个问题,如鲠在喉。争取早一天解决,早一天踏踏实实的睡觉。 问题是:在ES中,一条JSON数据是如何写入到磁盘上的? 如何解决这个问题?我想到了chatGPT,还有lucene的学习资料。这篇文章&…...

chapter-7数据库事务

以下课程来源于MOOC学习—原课程请见:数据库原理与应用 考研复习 DBMS保证系统中一切事务的原子性、一致性、隔离性和持续性 DBMS必须对事务故障、系统故障和介质故障进行恢复 恢复中最经常使用的技术:数据库转储和登记日志文件 恢复的基本原理&#…...

阿里本地生活再出发:口碑入高德,备战美团、抖音

配图来自Canva可画 近日,有传言称高德地图将和阿里本地生活旗下的到店业务口碑正式合并,未来阿里旗下所有的本地生活到店业务都将统一整合在高德地图的入口中。3月22日,高德地图正式确认了此事,并表示高德地图作为“出门好生活开…...

SSM学习记录3:响应(注释方式 + SprigMVC项目 + 2022发布版本IDEA)

响应 ResponseBody注解的作用是将当前控制器中方法的返回值作为响应体 1.返回页面 无需在方法上进行ResponseBody注解,只需RequestMapping匹配地址,并且返回值为带后缀的页面名字符串 前面学习中除了json数据,所有带ResponseBody注解的方法…...

Linux·gcc 编译优化简介

1、gcc 编译优化简介 gcc 提供了为了满足用户不同程度的的优化需要,提供了近百种优化选项,用来对 { 编译时间,目标文件长度,执行效率 } 这个三维模型进行不同的取舍和平衡。优化的方法不一而足,总体上将有以下几类&…...

【电子学会】2022年12月图形化一级 -- 潜水

潜水 暑假小雨和爸爸去玩了潜水,他见到了各种各样的海洋生物。 1. 准备工作 (1)添加背景“Underwater 2”; (2)删除小猫角色,添加角色“Diver2”、“Fish”、“Jellyfish”、“Shark”; (3)为背景添加声音“Xylo2”。 2. 功能实现 (1)点击绿旗,播放背景音乐…...

MySQL日期时间函数汇总、时间格式转换方法

MySQL日期时间函数汇总、时间格式转换方法时间函数日期时间格式转换date_format函数EXTRACT()DATE_ADD()DATE_SUB()DATEDIFF函数时间函数 函数描述NOW()返回当前的日期和时间CURDATE()返回当前的日期CURTIME()返回当前的时间DATE()返回日期或日期/时间表达式的日期部分HOUR()获…...

【CSS】使用绝对定位 / 浮动解决外边距塌陷问题 ( 为父容器 / 子元素设置内边距 / 边框 | 为子元素设置浮动 | 为子元素设置绝对定位 )

文章目录一、外边距塌陷描述1、没有塌陷的情况2、外边距塌陷情况二、传统方法解决外边距塌陷 - 为父容器 / 子元素设置内边距 / 边框三、使用浮动解决外边距塌陷 - 为子元素设置浮动四、使用绝对定位解决外边距塌陷 - 为子元素设置绝对定位一、外边距塌陷描述 在 标准流的父盒子…...

前端手写综合考题

1 实现一个 // 使用 promise来实现 sleepconst sleep (time) > {return new Promise(resolve > setTimeout(resolve, time))}sleep(1000).then(() > {// 这里写你的骚操作}) sleep 函数,比如 sleep(1000) 意味着等待1000毫秒 2 给定两个数组&#xff0c…...

数据结构-排序

本节目标: 1.排序的概念及其运用 2.常见排序算法的实现 3.排序算法复杂度及稳定性分析 1.排序的概念及其应用 1.1排序的概念 排序就是按照某个我们设定的关键字,或者关键词,递增或者递减,完成这样的操作就是排序。 1.2排…...

ROS话题通信自定义+发布订阅代码--03

话题通信自定义msg 在 ROS 通信协议中,数据载体是一个较为重要组成部分,ROS 中通过 std_msgs 封装了一些原生的数据类型,比如:String、Int32、Int64、Char、Bool、Empty… 但是,这些数据一般只包含一个 data 字段,结构的单一意味…...

【MySQL】实验七 视图

文章目录 1. 建立city值为上海、北京的顾客视图2. 建立城市为上海的客户2016年的订单信息视图3. SQL视图:建立视图AVG_CJ4. SQL视图:建立视图IS_STUDENT5. SQL视图:建立视图CJ_STUDENT6. SQL视图:根据视图CJ_STUDENT创建视图CJ_TJ1. 建立city值为上海、北京的顾客视图 建立…...

Linux常见操作命令【三】

一、系统资源 1.1 ps(process staus) ps -ef e显示所有进程、f全格式 ps -aux 显示所有包含其他使用者的进程 ps -ef | grep CCC 查找含有CCC进程的格式 ps -u username 显示指定进程用户信息1.2 kill kill 12345 杀死进程12345 kill -KILL…...

C-关键字(下)

文章目录循环控制switch-case-break-defaultdo-while-forgetchar()break-continuegotovoidvoid*returnconstconst修饰变量const修饰数组const修饰指针指针补充const 修饰返回值volatilestruct柔型数组union联合体联合体空间开辟问题利用联合体的性质,判断机器是大端还是小端enu…...

关于电商商品数据API接口列表,你想知道的(详情页、Sku信息、商品描述、评论问答列表)

目录 一、商品数据API接口列表 二、商品详情数据API调用代码item_get 三、获取sku详细信息item_sku 四、获得淘宝商品评论item_review 五、数据说明文档 进入 一、商品数据API接口列表 二、商品详情数据API调用代码item_get <?php// 请求示例 url 默认请求参数已经URL…...

232:vue+openlayers选择左右两部分的地图,不重复,横向卷帘

第232个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+openlayers项目中自定义js实现横向卷帘。这个示例中从左右两个选择框中来选择不同的地图,做了不重复的处理,即同一个数组,两部分根据选择后的状态做disabled处理,避免重复选择。 直接复制下面的 vue+openlayers…...

溯源取证-内存取证 高难度篇

今天的场景依然是windows场景&#xff0c;只不过此次场景分为两个镜像&#xff0c;本次学习主要学习如何晒别钓鱼邮件、如何提取钓鱼邮件、如何修复损坏的恶意文件、如何提取DLL动态链接库文件 本次需要使用的工具&#xff1a; volatility_2.6_lin64_standalone readpst clams…...

JAVA语言中的代理模式

代理可以进一步划分为静态代理和动态代理&#xff0c;代理模式在实际的生活中场景很多&#xff0c;例如中介、律师、代购等行业&#xff0c;都是简单的代理逻辑&#xff0c;在这个模式下存在两个关键角色&#xff1a; 目标对象角色&#xff1a;即代理对象所代表的对象。 代理…...

最后一步:渲染和绘制

浏览器的工作步骤如下&#xff1a; URL>字符流>词&#xff08;token&#xff09;流>DOM树&#xff08;不含样式信息的 DOM&#xff09;>DOM树CSS规则&#xff08;含样式信息的 DOM&#xff09;>根据样式信息&#xff0c;计算了每个元素的位置和大小>根据这些…...

Performance Fish深度解析:如何通过四级缓存架构实现《环世界》400%性能优化

Performance Fish深度解析&#xff1a;如何通过四级缓存架构实现《环世界》400%性能优化 【免费下载链接】Performance-Fish Performance Mod for RimWorld 项目地址: https://gitcode.com/gh_mirrors/pe/Performance-Fish Performance Fish是一款专为《环世界》&#x…...

从伯德图到阶跃响应:手把手教你用Matlab分析控制系统该不该校正

从伯德图到阶跃响应&#xff1a;手把手教你用Matlab分析控制系统该不该校正 控制系统就像一台精密的仪器&#xff0c;而伯德图、根轨迹和阶跃响应则是它的"体检报告"。当你拿到一个系统模型时&#xff0c;如何像医生解读化验单一样&#xff0c;准确判断它是否需要&qu…...

从CAN报文到转速值:手把手拆解SAE J1939-71的F004参数组(附Python解析代码)

从CAN报文到转速值&#xff1a;SAE J1939-71的F004参数组实战解析与Python实现 在汽车电子和商用车诊断领域&#xff0c;SAE J1939协议栈堪称工程师的"第二语言"。而其中J1939-71文档定义的参数组(PGN)解析&#xff0c;则是将原始CAN报文转化为工程价值的核心技能。本…...

Go语言内存优化:GC调优与内存池

Go语言内存优化&#xff1a;GC调优与内存池 1. GC调优 import "runtime/debug"func init() {debug.SetGCPercent(100) }2. sync.Pool var bufferPool sync.Pool{New: func() interface{} {return make([]byte, 4096)}, }func getBuffer() []byte {return bufferPool…...

别再搞混了!SAP物料主数据、BOM、工艺路线里的三种损耗率(Scrap)到底怎么配?

SAP三大损耗率配置实战指南&#xff1a;从物料主数据到工艺路线的精准决策 在SAP PP模块实施过程中&#xff0c;物料损耗率的配置往往成为顾问团队争论的焦点。我曾参与过一个汽车零部件制造项目&#xff0c;由于初期对三种损耗率的理解偏差&#xff0c;导致MRP运算结果与实际情…...

Wave Terminal:集成 AI 功能的强大终端,助你高效工作!

Wave Terminal&#xff1a;集成 AI 功能的强大终端应用&#xff0c;高效工作新选择&#xff01;Wave Terminal 是一款功能强大的终端应用程序&#xff0c;它将多种工具集于一身&#xff0c;还集成了 AI 功能&#xff0c;支持 Linux、MacOS 和 Windows 系统。使用 Linux 终端数十…...

番茄小说下载器:打造个人数字书库的终极解决方案

番茄小说下载器&#xff1a;打造个人数字书库的终极解决方案 【免费下载链接】fanqienovel-downloader 下载番茄小说 项目地址: https://gitcode.com/gh_mirrors/fa/fanqienovel-downloader 在数字阅读时代&#xff0c;你是否曾因网络不稳定而中断阅读&#xff1f;是否想…...

Whisky深度评测:如何在Apple Silicon Mac上构建Windows应用运行沙箱

Whisky深度评测&#xff1a;如何在Apple Silicon Mac上构建Windows应用运行沙箱 【免费下载链接】Whisky A modern Wine wrapper for macOS built with SwiftUI 项目地址: https://gitcode.com/gh_mirrors/wh/Whisky 随着Apple Silicon芯片在Mac产品线中的全面普及&…...

从STEMA风车题看Scratch画笔模块:如何用‘自制积木+不刷新’优化动画性能

从STEMA风车题看Scratch画笔模块&#xff1a;如何用‘自制积木不刷新’优化动画性能 在Scratch编程竞赛中&#xff0c;流畅的动画效果往往是评分的关键因素之一。以第15届蓝桥杯STEMA测评中的"绘制风车"真题为例&#xff0c;许多参赛者虽然能够实现基本功能&#xff…...

深度解析LevelUI:现代LevelDB可视化管理的完整实战指南

深度解析LevelUI&#xff1a;现代LevelDB可视化管理的完整实战指南 【免费下载链接】levelui A GUI for LevelDB management based on atom-shell. 项目地址: https://gitcode.com/gh_mirrors/le/levelui 在NoSQL数据库生态中&#xff0c;LevelDB以其出色的性能和简洁的…...