`
jljlpch
  • 浏览: 323277 次
  • 性别: Icon_minigender_1
  • 来自: 南昌
社区版块
存档分类
最新评论

主要参考了两篇文章《C#中简单调用c/c++旧模块》

阅读更多

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

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.dll和MyDll.lib。

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

将MyDll.dll和MyDll.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);  

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/notno/archive/2006/07/17/932335.aspx

分享到:
评论

相关推荐

    Demo: c/c++动态库(DLL)调用,c#等其他语言调用c/c++的DLL

    4. **C#调用C/C++ DLL**:C#可以通过.NET Framework的P/Invoke(Platform Invoke)机制调用C/C++ DLL。在C#代码中,需要定义对应的委托类型,声明DllImport特性,并指定DLL的路径。P/Invoke会处理底层的调用约定和...

    C#中简单调用cc++旧模块

    总之,C#调用C++旧模块涉及到类型映射、DLL导入、错误处理和调用约定等多个方面。正确理解和应用这些知识点,可以帮助我们顺利地在C#项目中集成C++的代码资源。在实际开发中,务必确保参数类型、返回值和错误处理都...

    C#调用C++调用实例

    本示例“C#调用C++调用实例”正是探讨了如何在C#应用程序中有效地调用C++代码。 C#与C++之间的互操作性主要通过微软的COM(Component Object Model)或者P/Invoke(Platform Invoke)技术实现。COM允许创建跨语言的...

    C#如何调用C++方法

    以上就是C#调用C++方法的基本原理和实现方式。通过理解这两种互操作机制,开发者可以根据项目的具体需求选择合适的方法进行跨语言调用。实际应用中,可能还需要考虑线程安全、性能优化等更多因素。

    非托管C++调用C#的dll

    通常,C#调用C++编写的dll可以直接使用dllimport,但是C++调用C#编写的dll需要使用托管C++将C#的dll进行一次封装,然后由非托管C++调用封装好的dll。然而,CLR VIA C#提供了一种非托管C++直接调用的方法,该方法可以...

    C#利用SWIG调用C++的DLL

    本文将深入探讨如何使用SWIG(Simplified Wrapper and Interface Generator)这一工具来实现在C#中调用C++编写的DLL动态链接库。 首先,SWIG是一个自动接口生成器,它的主要功能是生成接口代码,使得不同的编程语言...

    c# 调用c++ dll 调用opencv-wechat微信识别二维码。

    本案例中,我们将探讨如何使用C#调用C++编写的DLL,该DLL内部集成了OpenCV库来处理微信二维码的识别。OpenCV是一个强大的计算机视觉库,而微信二维码识别则涉及移动支付和社交应用中的关键功能。 首先,我们需要...

    C/C++参考手册.chm(共三本.chm)

    《C/C++参考手册》是一套综合性的编程指南,涵盖了C和C++两种语言的核心概念、语法、标准库以及常用编程技巧。这套手册分为三部分,分别是“C C++函数手册.chm”、“c++库函数(en).CHM”和“c++标准库函数(cn).chm”...

    c/c++/c#/vb/vb.net全局钩子

    这个文件名可能是某个库或者模块的名称,它可能封装了全局钩子的相关功能,方便开发者在C/C++、C#、VB/VB.NET中更便捷地使用全局钩子。使用这样的库通常会简化代码,减少错误,并提供额外的功能,如线程管理、钩子...

    C++和C#相互调用COM组件

    在IT行业中,跨语言通信是一项常见的任务,尤其是在大型项目中,不同的模块可能由不同语言编写。C++和C#作为两种广泛使用的编程语言,有时需要通过某种方式交互以实现更复杂的系统集成。本文将深入探讨如何利用COM...

    c#调用c语言Dll

    总结来说,C#调用C语言DLL是通过`DllImport`特性实现的,这允许C#应用程序利用C语言的高效计算能力或其他特定功能。此过程涉及C语言DLL的生成、C#的接口声明和异常处理,确保跨语言交互的正确性和稳定性。在实际开发...

    C#调用C++接口示例

    因此需要一种间接的做法,简单来说就是C#定义一个创建空字符串的接口,传递这个接口指针给C++模块,然后在C++模块中调用这个C#接口创建一个空的字符串接口。然后在传递字符串时先调用这个C#接口创建一个空字符串,...

    swig--在java、C#中调用c++写的DLL(以vs2012配置为例)

    总结一下,本教程主要介绍了如何使用SWIG在Java和C#中调用C++编写的DLL,涉及到的知识点包括:SWIG工具的使用,C++ DLL的创建,接口文件的编写,以及Java的JNI和C#的DllImport特性。这些步骤对于跨语言编程和利用...

    能被c#调用的opengl模块

    总之,这个"能被C#调用的OpenGL模块"项目实现了C++和C#之间的桥梁,让C#开发者能够利用OpenGL进行复杂的图形绘制。这涉及到DLL的创建、OpenGL API的使用、P/Invoke调用以及跨语言的错误处理等多个方面,展示了丰富的...

    C++编写DLL,分别让C++项目和C#项目调用

    对于C#调用C++编写的DLL(称为P/Invoke): 1. **定义DllImport】:在C#中,使用`[DllImport]`特性标记一个方法,指定DLL名和函数名。C#会自动处理名称修饰问题。 2. **数据类型转换**:由于C++和C#的数据类型不...

    VMIC GE公司PMC-5565板卡 C#/C++RFM2G系列编程库

    【标题】"VMIC GE公司PMC-5565板卡 C#/C++ RFM2G系列编程库"涉及的主要知识点是针对特定硬件设备——GE公司的PMC-5565光纤反射内存卡进行软件开发的技术。这个编程库是为C#和C++编程语言设计的,使得开发者可以有效...

    C#引用C++动态库 dll 实例

    在本实例中,C++DLL可能包含了一个或多个导出函数,这些函数是C#调用的关键。为了使C#能正确调用,C++DLL需要使用`__declspec(dllexport)`关键字来导出函数,同时确保函数调用约定为标准的C风格(即`extern "C"`,...

    c#调用C++DLL实例

    下面我们将详细介绍C#调用C++ DLL的步骤、方法以及相关的知识点。 1. **创建C++ DLL** 在C++环境中,首先需要编写一个DLL项目,定义对外公开的函数。例如,我们有一个简单的C++函数`AddNumbers(int a, int b)`,它...

Global site tag (gtag.js) - Google Analytics