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

react.js 做网站好吗ae模板下载网站推荐

react.js 做网站好吗,ae模板下载网站推荐,泰安有哪些网站,国外的网页制作网站目录 前言 一、C DLL 封装 二、C# 调用 DLL 1、创建 C# 控制台项目,调用 三、注意事项 前言 在实际工程开发中,跨语言调用是常见的需求,尤其是在性能要求较高的模块中,常常采用 C 实现核心算法逻辑,并通过封装为 D…

目录

前言

一、C++ DLL 封装

二、C# 调用 DLL

1、创建 C# 控制台项目,调用

三、注意事项


        

前言

        在实际工程开发中,跨语言调用是常见的需求,尤其是在性能要求较高的模块中,常常采用 C++ 实现核心算法逻辑,并通过封装为 DLL(动态链接库)的形式提供给其他语言调用,例如 C#。这种方式既能充分发挥 C++ 在执行效率、底层控制方面的优势,又可以借助 C# 在界面开发、快速迭代和平台整合方面的便利性,从而实现高效开发与运行的平衡。

        本项目以“C++ 封装成 DLL,然后在 C# 中调用”为核心,详细介绍了如何封装成标准的 Windows 动态链接库(DLL),并在 C# 环境中成功调用

一、C++ DLL 封装

//ImageProcessing.h
#pragma once#include <string>
#include <vector>#ifdef IMAGEPROCESSING_EXPORTS
#define DLL_API __declspec(dllexport)
#else
#define DLL_API __declspec(dllimport)
#endifextern "C" {/*** @brief 加载图像并进行反色处理* @param inputPath 输入图像路径* @param outputPath 输出图像路径* @return 处理成功返回1,失败返回0*/DLL_API int InvertImage(const char* inputPath, const char* outputPath);
}

cpp源文件:

#include "ImageProcessing.h"
#include <opencv2/opencv.hpp>void interpolateMat(const cv::Mat& input, cv::Mat& output)
{//*******//****
}Mat fitPlane(const std::vector<cv::Point>& points, const cv::Mat& depthMap)
{//*******//****
}int InvertImage(const char* inputPath, const char* outputPath)
{//interpolateMat();//****//fitPlane();
}

二、C# 调用 DLL

1、创建 C# 控制台项目,完成调用,结束。

using System;
using System.Runtime.InteropServices;namespace UseImageProcessingDll
{class Program{[DllImport("MyTest.dll", CallingConvention = CallingConvention.Cdecl)]public static extern int InvertImage(string inputPath, string outputPath);static void Main(string[] args){string input = "test.jpg";string output = "inverted.jpg";int result = InvertImage(input, output);Console.WriteLine(result == 1 ? "图像处理成功!" : "图像处理失败!");}}
}

三、注意事项

  • 确保 xxx.dllopencv_worldXXX.dll(如 opencv_world455.dll)位于 bin\Releasebin\Debug 目录下。

  • 推荐设置为 x64 平台(C++ 和 C# 都必须一致)。

2、另外如果遇到 C# 中没有 std::string& 这样的类型,这属于 C++ 的标准库类型,不能直接通过 P/Invoke(DllImport)跨语言传递。则:

  • 在 C++ 侧提供一个 const char* 的 C 接口包装(因为直接 P/Invoke std::string& 不稳定)。

  • 在 C# 中通过 [DllImport] 调用这个包装函数

extern "C"
{DLL_API void ExtractionPathAndSave(std::string& FileName, double minThreshold = 0.15);// 新增:接受 C 字符串DLL_API void ExtractionPathAndSave_Ansi(const char* fileName, double minThreshold = 0.15);
}
void ExtractionPathAndSave(std::string& FileName, double minThreshold)
{// 你的实际处理逻辑
}extern "C" void ExtractionPathAndSave_Ansi(const char* fileName, double minThreshold)
{std::string strFile(fileName);ExtractionPathAndSave(strFile, minThreshold);
}

调用时C# 的 string 会自动通过 [MarshalAs(UnmanagedType.LPStr)] 转换为 const char*,只要设置 CharSet = CharSet.Ansi

using System;
using System.Runtime.InteropServices;namespace UseDLL_Test
{class Program{// 方法1:导入 DLL 函数,注意命名要和导出的函数一致[DllImport("DLL_API .dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]public static extern void ExtractionPathAndSave_Ansi(string fileName, double minThreshold);方法2:P/Invoke 声明:调用 C++ 的 Ansi 包装函数//[DllImport("DLL_API.dll",EntryPoint = "ExtractionPathAndSave_Ansi", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]//public static extern void ExtractionPathAndSave(string fileName, double minThreshold);static void Main(string[] args){string filePath = @"C:\data\scan_data.bin";double threshold = 0.2;try{Console.WriteLine("调用 DLL 提取路径...");ExtractionPathAndSave_Ansi(filePath, threshold); //方法1//ExtractionPathAndSave(binFile, threshold);//方法2Console.WriteLine("完成!");}catch (Exception ex){Console.WriteLine("发生错误: " + ex.Message);}Console.ReadKey();}}
}


文章转载自:

http://2YFiEPHC.bwdnx.cn
http://WuEkfbk9.bwdnx.cn
http://L0gdH6BE.bwdnx.cn
http://jSKCRb4a.bwdnx.cn
http://JwO7pt9Z.bwdnx.cn
http://rAAIvS7t.bwdnx.cn
http://dzh0WeAz.bwdnx.cn
http://ubNiicb1.bwdnx.cn
http://fN7jVfYM.bwdnx.cn
http://EuQS361A.bwdnx.cn
http://ErwlgcjP.bwdnx.cn
http://kleTrWsi.bwdnx.cn
http://Ye6Q4S4m.bwdnx.cn
http://x3Q07cmr.bwdnx.cn
http://QA9JdlOS.bwdnx.cn
http://lN2kR4l5.bwdnx.cn
http://PumXdNeL.bwdnx.cn
http://BX7DAKNV.bwdnx.cn
http://g0bWOyYY.bwdnx.cn
http://oJppXRRE.bwdnx.cn
http://szjeeO3N.bwdnx.cn
http://cWjK1j7O.bwdnx.cn
http://0xk55Hba.bwdnx.cn
http://pE7jqqQJ.bwdnx.cn
http://G2bbTq7V.bwdnx.cn
http://iMTvB3vK.bwdnx.cn
http://FsrEgXT9.bwdnx.cn
http://DViLmk7N.bwdnx.cn
http://IkUJbMDL.bwdnx.cn
http://KUh0vzre.bwdnx.cn
http://www.dtcms.com/wzjs/671042.html

相关文章:

  • 自动化设计网站建设智慧团建手机登录官网
  • 做网站的设计尺寸找兼职做网站的哪里找
  • 手机软件下载网站手机网站的模板下载
  • 用wordpress搭建完整网站教程gae安装wordpress
  • 网站搜索排名优化打开一个网站慢
  • asp网站服务建设论文客户管理软件有哪些
  • 程序员网站邢台seo公司
  • 网站资源建设的步骤家居seo整站优化方案
  • 平台式网站模板中国网站制作企业排行榜
  • 网站的基本元素wordpress模板最多使用
  • 网站打不开用什么浏览器徐州网站排名
  • 网站推广策划书的共同特点有哪些vue网站开发注意事项
  • wordpress创建分站点做自己的网站logo
  • 公司培训网站需要广播证吗wordpress前端接口
  • 西安注册公司在哪个网站系统重庆做网站建设的公司哪家好
  • 家装类设计网站太原房产信息网
  • 网站外链有死链镇江市建设局网站
  • 做饲料的专业网站湖北高端企业礼品定制
  • 网站多久被百度收录制作公司网站源代码怎么弄
  • 做网站必须学php吗苏州商城网站建设电话
  • 免费诶网站建设北京通州马桥网站建设
  • 网站开发iso9001凡科手机网站设置问题
  • 怎么写代码自己制作网站计算机基础网页制作题
  • 手机端店铺装修seo与网站建设的关联
  • 品牌网站建设只詢大蝌蚪php中英双语农业公司网站源码
  • 招商加盟网站大全有一个做场景动画的网站
  • 织梦教育网站模板网站到期如何续费
  • 怎么样建网站chatgpt openai
  • 如何做登陆界面的网站网站快速备案安全
  • 湖南平台网站建设制作智慧团建登录手机版正式版