C#调用C++动态链接库(dll)

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

主要参考了两篇文章《C#中简单调用c/c++旧模块》 和《基于Visual C++6.0DLL编程实现》,复杂的理论和概念就不说了,简略地写一个实现的全过程吧:

1、在Visual Studio 6.0中用C++语方创建dll文件。

新建工程时选择”Win32 Dynamic-link library ”,在MyDll.h文件中按如下方式声明函数:

#define LIBEXPORT_API extern "C" __declspec(dllexport)

LIBEXPORT_API int Max(int a, int b);

MyDll.cpp中实现这个函数。

生成MyDll.dllMyDll.lib

2、在Visual C# .net中引用dll文件

MyDll.dllMyDll.lib拷贝到可执行文件目录下。

添加引用using System.Runtime.InteropServices;

按如下方式声明一个将要引用MyDll.dll中函数的类:

  public class RefComm
  {
  [DllImport("LibEncrypt.dll",
   EntryPoint="Max",           // 注意:引号内必须为完整的函数名,不能有空格
   CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)]
   public static extern int Max (int a,int b);
  }

使用如下语句调用:

int iSum = RefComm.Max(2,3);  
c#调用非托管C++生成的dll  最近在项目中碰到需要调用非托管C++生成的dll,下面将自己遇到的问题,以及解决的办法总结如下:  1.     问题:     我们通常去映射dll的方法是使用        public const string dllPath =path;                [DllImport(dllPath + "test.dll", EntryPoint = "test()", Se 阅读详情

相关推荐

C#调用C/C++编译生成的dll

1 在C#调用C/C++动态链接库( .dll 文件)的一般格式 using System.Runtime.InteropServuces; //这是必须引用的命名空间(添加在文件中的其他using 下) 引用原型: [DllImport("user32.dll")] public static extern ReturnType FunctionName(t...

love_kevin的博客 1万+

C++创建DLL动态链接库C#项目中调用

1.非托管 1.创建动态链接库DLL 2.pch.h // pch.h: 这是预编译标头文件。 // 下方列出的文件仅编译一次,提高了将来生成的生成性能。 // 这还将影响 IntelliSense 性能,包括代码完成和许多代码浏览功能。 // 但是,如果此处列出的文件中的任何一个在生成之间有更新,它们全部都将被重新编译。 // 请勿在此处添加要频繁更新的文件,这将使得性能优势无效。 #ifndef PCH_H #define PCH_H // 添加要在此处预编译的标头 #include "fram

sam的博客 229

C#调用C++动态链接库DLL两者目标平台X64或X86必须保持一致

报错:试图加载格式不正确。程序在32操作系统上运行正常,在64操作系统上运行。 注意保持平台一致。 修改1 修改2  C#项目属性中——>目标平台

智商不够,时间来凑 3499

C++动态链接库DLL使用注意事项及C#调用详解

C++动态链接库DLL使用注意事项及C#调用详解

yohnyang的博客 2373

C#分享辅助类:动态调用C++DLL(DynamicCallHandler)

【代码】C#分享辅助类:动态调用C++DLL(DynamicCallHandler)

lyp1215的专栏 423

C#动态调用C/C++DLL

C#调用C/C++dll有两种方式,下边就写一下两种不同方式的调用方法。 1.DLLImport方式 [DllImport("CalcDll")] public extern void Add(int a, int b);

jh_negit的博客 3287

c# 如何调用C++ 动态链接库DLL文件

本文主要记录了C#项目以非托管方式进行调用C++ DLL文件。解下来将记录C# 调用C++ DLL 中复杂函数时数据处理过程,如返回值或参数为数组、指针、引用、结构体,结构体指针等,这些在C++已经让人有些头疼的东西,如何在C#中处理,欢迎持续关注并留言讨论。

Rough Set 3229

C#调用C++动态链接库dll

C#调用C++动态链接库dll 由于公司很多底层的SDK,都是C++开发,上层的应用软件却是C# Winform程序。在实际工作的过程中,就经常碰到了C# 程序调用C++ 动态库的问题。最近一直在和C++ 打交道,C# 怎么调用C++ 类库函数。也遇到了一些问题,所以就来总结总结C#程序调用C++动态库时的各种坑。 1. 可能遇到的问题: C#调用动态库的过程中我也遇到了以下一些问题:...

爱喝奶茶的博客 3627

C#调用C++ DLL动态链接库如何回传数组

C#调用C++ DLL动态链接库如何回传数组 参考:https://www.cnblogs.com/zhaox583132460/p/3402243.html 使用C#中的GCHandle类,解决数组数据传回。 C++ 内部的函数 extern "C" __declspec(dllexport) void __stdcall function(int* retriveData, int idataCount) { for(int i = 0; i < idataCount, i++) { re

schmiloo的博客 3532

C# / C++ 调用C++创建动态链接库DLL

else#endifextern "C"return 3;}API.csprogram.cs输出结果:

weixin_45860692的博客 353

C# 调用C++动态链接库Dll以及联调

C# 调用C++动态链接库Dll以及联调 平:很好用,已经使用过了。可以联调。 1: C++对外公开的接口需声明为: extern “C” __declspec Fun(); 这是由于c++c# 调用方式不一样,所以函数前需要加__stdcall修饰; 2:c#中通过DllImport引用c++动态链接库 [DllImport("xxx.dll")] public static extern fun() C++c#的数据类型有的不一样,这个需要注意; 3:把C++

jean7155的专栏 863

Unity调用C++动态链接库DLL)或者C#类库

一、Unity调用C++动态链接库 1.新建DLL 2.新建头文件及源文件CPP (头文件U3DTest.h) #if defined (EXPORTBUILD) # define _DLLExport __declspec (dllexport) # else # define _DLLExport __declspec (dllimport) #endif extern "C" ...

Exclaiming的博客 1722

在Unity中使用C#调用C++动态链接库DLL

在Unity中使用C#调用C++动态链接库DLL)1.创建一个c++的新项目,选这个动态链接库DLL),一定要选这个,会省很多事头文件代码源文件内容,一个加法函数,来源于网上然后点击生成解决方案,如果会报这个,之类的错误解决方法。

weixin_46971942的博客 1117

C#调用C++动态链接库(dll)的简单样例

C#调用C++动态链接库(dll)的简单样例 环境:Win10、VS2017 一、生成C++动态链接库dll 创建动态链接库dll 新建一个C++类 打开FourArith.cpp文件,添加四则运算方法

weixin_38415306的博客 252

VS中C++生成dll以及调用

2、添加到dll到Debug文件夹。右击项目—配置属性—C/C++—右键我们的项目,点击生成。

qq_30725967的博客 6715

进阶02:C#调用c++创建的动态链接库dll文件

C#调用外部DLL文件是一种常见的编程实践,它具有以下几个重要意义:1.代码重用;2.模块化;3.性能优化;4.安全性;5.跨平台兼容性;6.方便更新和维护;7.利用特定技术或框架;8.减少编译时间;9.保护知识产权;10.动态加载等。调用外部DLL时,需要注意DLL的兼容性、版本控制以及依赖管理等问题,确保程序的稳定性和可靠性。本节通过调用c++编写的dll文件显示带有噪声的正弦信号和脉冲信号。

weixin_38637405的博客 1048

关于使用C#调用C++生成的动态链接库DLL文件)

使用C++的打开一张图片,C++的程序。在C++新建项目的应用设置里面选择DLL,图片如下        将显示单张图片的C++代码复制到建立文件的.CPP文件下面,然后调试。        代码如下:  // Cpp_cshape.cpp : 定义 DLL 应用程序的导出函数。 // #include "stdafx.h" #include "stdafx.h"   

HuanChan的博客 2543

c# 调用c++写的动态链接库dll文件

AddOperate.h extern _declspec(dllexport) int Sum(int a, int b); class AddOperate { public : }; AddOperate.cpp 复制代码 #include “AddOperate.h” #include “iostream” using namespace std; int Sum(int a, int b) { if (a - (int)a != 0 || b - (int)b != 0) { cout <&

qq_23158477的博客 219

C++学习笔记」动态链接库(Dll)C#调用C++dll

首先创建一个C++dll,具体步骤,请参考我的:「C++学习笔记」动态链接库(Dll):创建与调试。 1、创建C#控制台项目 就在dll的目录下直接创建吧,添加一个名称为“CSharpUseDll”的C#控制台程序。 创建完成后,在 【解决方案平台】处下拉点击【配置管理器】 在【配置管理器】中,把该项目的平台选择为“X64(dll对应)。 如果没有“X...

Raink的博客 596
上一篇: 按值、按引用和作为输出变量传递数组参数
下一篇: C#调试时,监视栏里慎用函数!
notno
博客等级 码龄22年 18粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值