C#-调用C++接口

一.静态&动态装载DLL

     C++中接口通过编译为DLL对外提供调用,C#需要将DLL加载至本应用才可实现C++接口调用.

     1.静态装载

        C#应用程序在编译为可执行exe时将外部DLL装载至本应用中,例如在CSC编译指令中添加相关参数可实现DLL引用.

        csc /reference:user32.dll /out:HelloWorld.exe

     2.动态装载

        C#应用程序在运行时通过调用kernel32.dll中LoadLibrary完成外部DLL的装载.

二.编译C++DLL

     实现C++方法MYFunction,将接口编译为MyClass.dll

// MyClass.h
#ifdef BUILD_DLL
#define MY export __declspec(dllexport)
#else
#define MY export __declspec(dllimport)
#endifclass MY MyClass {
public:void MYFunction();
};// MyClass.cpp
#include "MyClass.h"void MyClass::MYFunction() {// Implementation
}

三.使用DllImport映射LoadLibrary接口

	public static class Kernel32{[DllImport("kernel32", CharSet = CharSet.Unicode, SetLastError = true)]public static extern IntPtr LoadLibrary(string lpFileName);}

四.使用DllImport映射MYFunction接口

	static class Tools{[DllImport("MyClass.dll", SetLastError = true)]internal static extern void MYFunction();}

五.C#调用DLL中接口

    public static void Main(){Kernel32.LoadLibrary("myclass.dll");Tool.MYFunction();}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/65221.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习C++:标识符命名规则

标识符命名规则: 作用:C规定给标识符(变量、常量)命名时,有一套自己的规则 标识符不能是关键字 标识符只能由字母、数字、下划线组成 第一个字符必须为字母或下划线 标识符中字母区分大小写 (给标识符命…

Linux系统程序设计--6.线程

线程基本概念 刚创建的进程默认有一个线程&#xff0c;成为主控线程(主线程) Linux线程实现 线程标识 Linux线程的创建和终止 pthread_create 龟兔赛跑案例 #include<stdio.h> #include<stdlib.h> #include<pthread.h> #include<math.h>void * th_fn…

5G学习笔记之Non-Public Network

目录 0. NPN系列 1. 概述 2. SNPN 2.1 SNPN概述 2.2 SNPN架构 2.3 SNPN部署 2.3.1 完全独立 2.3.2 共享PLMN基站 2.3.3 共享PLMN基站和PLMN频谱 3. PNI-NPN 3.1 PNI-NPN概述 3.2 PNI-NPN部署 3.2.1 UPF独立 3.2.2 完全共享 0. NPN系列 1. NPN概述 2. NPN R18 3. 【SNPN系列】S…

leetCode 292Nim游戏

Nim 游戏中的必胜策略分析 在游戏的世界里&#xff0c;有许多看似简单却蕴含着深刻策略的游戏&#xff0c;Nim 游戏就是其中之一。今天&#xff0c;我们就来深入探讨一下这个有趣的游戏&#xff0c;并通过编程来判断先手在给定石头数量下是否能够获胜。 游戏规则 Nim 游戏的…

DevOps实战:用Kubernetes和Argo打造自动化CI/CD流程(1)

DevOps实战&#xff1a;用Kubernetes和Argo打造自动化CI/CD流程&#xff08;1&#xff09; 架构 架构图 本设计方案的目标是在一台阿里云ECS服务器上搭建一个轻量级的Kubernetes服务k3s节点&#xff0c;并基于Argo搭建一套完整的DevOps CI/CD服务平台&#xff0c;包括Argo CD…

Unity3D用正则判断身份证号或邮箱

系列文章目录 unity工具 文章目录 系列文章目录👉前言👉一、正则判断邮箱格式👉二、正则判断身份证号👉壁纸分享👉总结👉前言 C#正则表达式(Regex)是一种用来匹配字符串模式的强大工具。在C#中,可以使用System.Text.RegularExpressions命名空间下的Regex类来处…

清空DNS 缓存

如果遇到修改了host文件&#xff0c;但是IP和域名的映射有问题的情况&#xff0c;可以尝试刷新DNS缓存。 ipconfig/flushdns win建加R建&#xff0c;然后输入cmd&#xff0c;然后回车 然后回车&#xff0c;或者点击确定按钮。 出现如下所示标识清空DNS 缓存成功。

计算机伦理与职业规范1:计算的社会背景

1 第一个阶段&#xff1a;为战争而发展的计算机器 1.1 问题描述 面对全球冲突&#xff0c;一帮数学家开始致力于尽可能快地解决复杂数学问题。冲突双方都会通过无线电发送命令和战略信息&#xff0c;而这些信号也可能被敌方截获。为了防止信息泄露&#xff0c;军方会对信号进…

笔记本通过HDMI转VGA线连接戴尔显示器,wifi不可用或网速变慢

早上开开心心的来使用我的分屏显示器&#xff0c;结果winP开拓展&#xff0c;我的wifi就断掉了&#xff0c;琢磨了好一阵我以为是wifi的问题&#xff0c;发现不进行拓展&#xff0c;网络又好了&#xff0c;一上午就研究这个了&#xff0c;说是hdmi信号干扰了wifi信号啥的额&…

48页PPT|2024智慧仓储解决方案解读

本文概述了智慧物流仓储建设方案的行业洞察、业务蓝图及建设方案。首先&#xff0c;从政策层面分析了2012年至2020年间国家发布的促进仓储业、物流业转型升级的政策&#xff0c;这些政策强调了自动化、标准化、信息化水平的提升&#xff0c;以及智能化立体仓库的建设&#xff0…

计算机网络:应用层 —— 网络应用模式

文章目录 客户—服务器方式和对等方式客户/服务器方式 (C/S方式)工作流程特点 对等方式 (P2P方式)工作流程P2P 应用特点 客户—服务器方式和对等方式 网络应用程序运行在处于网络边缘的不同的端系统上&#xff0c;通过彼此间的通信来共同完成某项任务。 开发一种新的网络应用…

MC服务器异常ip入侵过滤——使用GeoLite2-Country.mmdb离线数据库定位玩家IP归属国家

服务器插件 ipvalidate-for-mcpaper1.21.jar。 在搞一些东西时发现了GeoLite2这个数据库&#xff0c;本质上它应该算是一个离线的ip地理数据库&#xff0c;就是可以查询到IP对应的国家或地区&#xff0c;MAXMIND还提供了更具体的城市数据库&#xff0c;似乎也可以查到ip对应的城…

uniapp——APP读取bin文件,解析文件的数据内容(二)

文章目录 读取bin文件内容&#xff0c;发送给蓝牙设备&#xff1b;上传文件返回数据格式通过URL路径获取文件对象&#xff0c;读取文件的数据内容file对象返回数据格式 读取bin文件内容&#xff0c;发送给蓝牙设备&#xff1b; 上传文件&#xff0c;根据返回路径&#xff0c;解…

【计算机视觉基础CV-图像分类】05 - 深入解析ResNet与GoogLeNet:从基础理论到实际应用

引言 在上一篇文章中&#xff0c;我们详细介绍了ResNet与GoogLeNet的网络结构、设计理念及其在图像分类中的应用。本文将继续深入探讨如何在实际项目中应用这些模型&#xff0c;特别是如何保存训练好的模型、加载模型以及使用模型进行新图像的预测。通过这些步骤&#xff0c;读…

pytorch中torch.nn.functional.normalize、nn.norm和LayerNorm计算中的区别

torch.nn.functional.normalize 计算方式 v v max ⁡ ( ∥ v ∥ p , ϵ ) \mathbf{v} \frac{\mathbf{v}}{\max\left(\|\mathbf{v}\|_p, \epsilon\right)} vmax(∥v∥p​,ϵ)v​ pytorch例子 a torch.arange(12).reshape(3,4).float() torch.nn.functional.normalize(a, d…

sentinel限流+其他

quick-start | Sentinel sentinel 作用 限流 熔断降级 1&#xff0c;限制什么 QPS 并发线程数 2&#xff0c;限制什么 资源&#xff0c;什么资源 服务&#xff0c;方法&#xff0c;接口&#xff0c;或者一段代码 3&#xff0c;实现方式 配置规则 注解 其他 Java常见5种限流…

运行Zr.Admin项目(后端)

1.下载Zr.Admin代码压缩包 https://codeload.github.com/izhaorui/Zr.Admin.NET/zip/refs/heads/main 2.打开项目 我这里装的是VS2022社区版 进入根目录&#xff0c;双击ZRAdmin.sln打开项目 3.安装.net7运行时 我当时下载的代码版本是.net7的 点击安装 点击安装&#xff0…

Linux系统升级OpenSSH 9.8流程

参考链接&#xff1a; openssh最新版本下载地址&#xff1a;Index of /pub/OpenBSD/OpenSSH/portable/ 注意&#xff1a;openssh9.8需要依赖openssl&#xff0c;版本至少为1.1.1。 一、简介 Openssh存在远程代码执行漏洞(CVE-2024-6387)&#xff0c;攻击者可以成功利用该漏…

webrtc-internals调试工具

Google 的 Chrome&#xff08;87 或更高版本&#xff09;WebRTC 内部工具是一套内置于 Chrome 浏览器中的调试工具; webrtc-internals 能够查看有关视频和音频轨道、使用的编解码器以及流的一般质量的详细信息。这些知识对于解决音频和视频质量差的问题非常有帮助。 webrtc-int…

选择屏幕的用法

**************************定义控件*********************************** SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-002. SELECT-OPTIONS bukrs FOR iloa-bukrs . "公司代码 SELECT-OPTIONS swerk FOR iloa-swerk OBLIGATORY . "工厂 SELECT-O…