`
jljlpch
  • 浏览: 319794 次
  • 性别: 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

分享到:
评论

相关推荐

    C#调用C++接口示例

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

    能被c#调用的opengl模块

    该模块使用c++动态库编程技术,实现opengl画三维图,并能被vs2008的C#调用,传递个panel的指针(INTPTR)即可。

    C++和C#之间互相调用经验详谈

    在加载DLL时候将此接口传到DLL中,这样子模块在需要的时候可以调用父的逻辑了,至于父调子,那更简单了,主程序有一个纯虚类,子模块都继承此接口,并进行重写,主程序按照一定的顺序分别调用,这样父与子的逻辑交互...

    VS2010实现64位代码调用32位模块方法

    最近在做代码升级64位,因为有些第三方的模块没有源码,所以需要用到64位代码调用32位模块的方案,在网上找了很多资料和方法,最终参考国外的一篇文章解决了问题,原理是应用进程外com实现,具体见参考文献: ...

    纯真IP数据库查询模块源代码参考(C#)

    基于这些原因,程序中全部使用静态方法,实际上这是由我的另一个C++的程序改写的C#程序,模块的调用很简单,例如,使用当前目录下的CoralWry.dat数据文件来查询IP地址121.193.213.6,则可以: IpLocation ipl=...

    C++中string转换为char*类型返回后乱码问题解决

    在写二叉树序列化与反序列化时发现序列化函数为char* Serialize1(TreeNode *root) 其函数返回类型为char*,但是我在实现的过程中为了更方便的操作添加字符串使用的是C++中string类型的变量,这就导致我最后得到的...

    starcore_for_winuwp.3.5.0.zip

    •集成脚本之间双向调用桥接,任何语言 c/c++, lua, python, java, c#,ruby可以直接存取和调用其它语言中的类,函数,方法,以及模块 •支持丰富的网络功能: tcp/udp, telnet server, http server, soap server. •...

    aardio工具解压版

    因为 aardio奇特的语言特性,aardio的胶水能力极强,在aardio中可以非常方便的调用C语言、C++、C#、Java、Python、Javascript、Node.Js、Flash ActionScript、PHP、VBScript、NewLISP、Delphi、Go语言 .........

    获取NVIDIA显卡温度模块 支持 C++ VB C# 等

    在C#中调用: 申明: [DllImport("NvTemp.dll", EntryPoint = "GetTemperature")] public static extern bool GetTemperature(ulong[] temp); 调用: temp = new ulong[1]; r = GetTemperature(temp); 在temp...

    C#创建COM组件,由Qt应用程序调用.zip

    QT,C++使用技巧,详细介绍了一些Qt框架的各种功能和模块,以及如何使用Qt进行GUI开发、网络编程和跨平台应用开发等。实战应用参考资料,源码参考。 适用于初学者和有经验的开发者,能够帮助你快速上手Qt并掌握其...

    精通.NET互操作.part1

    但是如果你需要经常使用C++调用C#模块,C#调用C++模块,Javascript调用C++的模块的话,这本书看一下还是有必要的。 对神一样的人来说,这本书只是基础而已,都是很表层的东西。对于咱们为了活命的,这本书就是一本...

    在c++中实现属性

    本文试着在C++中不使用任何扩展技术模拟C#(或其他语言)中的属性特征。大多数在C++实现属性的库和编译器使用扩展技术,如Managed C++或C++ Builder,或者他们使用如通常函数的set和get方法,但那不是属性。 详述 ...

    libxml2 安装Php5时会提示缺少libxml2

    它用C语言写成, 并且能为多种语言所调用,例如C语言,C++,XSH。C#, Python,Kylix/Delphi,Ruby,和PHP等。Perl中也可以使用XML::LibXML模块。它最初是为GNOME开发的项目,但现在可以用在各种各样的方面。libXML ...

    C#微软培训资料

    18.2 在 C #代码中调用 C++和 VB 编写的组件 .240 18.3 版 本 控 制 .249 18.4 代 码 优 化 .252 18.5 小 结 .254 第五部分 附 录 .255 附录 A 关 键 字.255 附录 B 错 误 码.256 附录 C .Net 名字空间...

    STK ( Satellite Tool Kit ) 教程

    1、stkX是STK help中的一部分,主要讲述与外部程序(C++/C#/MATLAB等)的接口设计。 在stkX→Tutorials→PDFs中给出了一些如何调用STKX模块的一些简单例子。 2、STK覆盖模块教材.pdf STK链路模块教材.pdf STK...

    c#学习笔记.txt

    但是当他们看完C#的文档后又开始高兴起来,因为C#是如此简单:事实上,简单正是C#最大的特点。除此之外,它还具有现代、面向对象、类型安全、版本控制、兼容、灵活等特点。详细介绍请参阅rainbow(一个长着胡子的...

    aardio帮助文档

    因为 aardio奇特的语言特性,aardio的胶水能力极强,在aardio中可以非常方便的调用C语言、C++、C#、Java、Python、Javascript、Node.Js、Flash ActionScript、PHP、VBScript、NewLISP、Delphi、Go语言 .........

    炫彩界面库(DirectUI,C&C++,v1.3.1)

    1.C/C++软件界面开发框架,基于Windows平台的Win32开发,不需要其他的库支持,从而缩小软件体积,提高效率,增强软件的兼容性. 2.采用DirectUI设计思想,在窗口内无子窗口,界面元素都是一个逻辑上的区域,以方便开发出炫彩...

    全新VC版fiddler开发的DLL插件全源码,支持各种开发语言调用-易语言

    模块使用,名字为奇易模块, 项目由2017年开始进行第一次封装,由于C#开发DLL调用比较麻烦,特意再次封装为C++动态库进行调用。由于之前是专门为易语言而开发的dll,大部分的功能传递都是通过指针进行完成,对于其它...

Global site tag (gtag.js) - Google Analytics