C#-调用C++接口

news/2024/12/28 4:04:41/

一.静态&动态装载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.ppmy.cn/news/1558688.html

相关文章

Python使用requests_html库爬取掌阅书籍(附完整源码及使用说明)

教程概述 本教程先是幽络源初步教学分析掌阅书籍的网络结构,最后提供完整的爬取源码与使用说明,并展示结果,切记勿将本教程内容肆意非法使用。 原文链接:Python使用requests_html库爬取掌阅书籍(附完整源码及使用说明…

Java抽象工厂+单例模式

在前端时间开发过程中,有这样一个业务场景:A;B两家厂商设备进行设备信息的同步功能。 根据实际场景,做了抽象工厂+单例模式实现调用工厂时,生成不同的具体业务引用对象,实现方法的调用。 概念: 抽象工厂模式通过接口或抽象类来创建一系列相关或依赖对象。它定义了一组工…

武汉火影数字3D光影秀打造 “光+影+文化+故事+演艺“完美融合

3D光影秀打造利用虚拟现实技术、裸眼3D动画技术,创造出一种立体视觉效果,实现物体与动画的完美融合,产生强烈的视觉冲击力。 作为一种独特的艺术形式,光影秀能够打破传统艺术形式的界限,提供全新的视觉体验&#xff0c…

无需公网 IP 实现外部访问 Puter 一站式云平台

Puter 是一款隐私至上的个人云,它是开源桌面环境,运行在浏览器中,这款桌面环境具备丰富的功能、异常快速和高度可扩展性。它可以用于构建远程桌面环境,也可以作为云存储服务、远程服务器、Web 托管平台等的界面。 第一步&#xf…

<代码随想录> 算法训练营-2024.12.23

今日专题 动态规划 股票买卖 今日总结:动态规划得好好想一想需要什么状态,状态其实是用来描述子问题的 121. 买卖股票的最佳时机 解法一:动态规划 class Solution:def maxProfit(self, prices: List[int]) -> int:#dp[i][j] 表示当前拥…

华为云语音交互SIS的使用案例(文字转语音-详细教程)

文章目录 题记一 、语音交互服务(Speech Interaction Service,简称SIS)二、功能介绍1、实时语音识别2、一句话识别3、录音文件识别4、语音合成 三、约束与限制四、使用1、API2、SDK 五、项目集成1、引入pom依赖2、初始化 Client1)…

Grok 2.0:马斯克的大模型挑战ChatGPT,AI竞争再升级

引言:马斯克Grok 2.0的横空出世 在人工智能(AI)领域,竞争从未停止。随着大型语言模型(LLM)的快速发展,各大科技巨头纷纷推出自己的AI模型,试图在激烈的竞争中占据领先地位。最近&am…

shell学习简介(一)

这里写目录标题 一、Shell简介二、Shell脚本注意事项三、入门脚本 一、Shell简介 Shell 脚本是一种用于自动化任务的脚本语言,通常在 Unix/Linux 系统中使用。通过结合条件判断和循环来实现命令的自动运行以完成一些相对固定的操作。 简单说:Shell就是一…