主要参考了两篇文章《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++动态库编程技术,实现opengl画三维图,并能被vs2008的C#调用,传递个panel的指针(INTPTR)即可。
在加载DLL时候将此接口传到DLL中,这样子模块在需要的时候可以调用父的逻辑了,至于父调子,那更简单了,主程序有一个纯虚类,子模块都继承此接口,并进行重写,主程序按照一定的顺序分别调用,这样父与子的逻辑交互...
最近在做代码升级64位,因为有些第三方的模块没有源码,所以需要用到64位代码调用32位模块的方案,在网上找了很多资料和方法,最终参考国外的一篇文章解决了问题,原理是应用进程外com实现,具体见参考文献: ...
基于这些原因,程序中全部使用静态方法,实际上这是由我的另一个C++的程序改写的C#程序,模块的调用很简单,例如,使用当前目录下的CoralWry.dat数据文件来查询IP地址121.193.213.6,则可以: IpLocation ipl=...
在写二叉树序列化与反序列化时发现序列化函数为char* Serialize1(TreeNode *root) 其函数返回类型为char*,但是我在实现的过程中为了更方便的操作添加字符串使用的是C++中string类型的变量,这就导致我最后得到的...
•集成脚本之间双向调用桥接,任何语言 c/c++, lua, python, java, c#,ruby可以直接存取和调用其它语言中的类,函数,方法,以及模块 •支持丰富的网络功能: tcp/udp, telnet server, http server, soap server. •...
因为 aardio奇特的语言特性,aardio的胶水能力极强,在aardio中可以非常方便的调用C语言、C++、C#、Java、Python、Javascript、Node.Js、Flash ActionScript、PHP、VBScript、NewLISP、Delphi、Go语言 .........
在C#中调用: 申明: [DllImport("NvTemp.dll", EntryPoint = "GetTemperature")] public static extern bool GetTemperature(ulong[] temp); 调用: temp = new ulong[1]; r = GetTemperature(temp); 在temp...
QT,C++使用技巧,详细介绍了一些Qt框架的各种功能和模块,以及如何使用Qt进行GUI开发、网络编程和跨平台应用开发等。实战应用参考资料,源码参考。 适用于初学者和有经验的开发者,能够帮助你快速上手Qt并掌握其...
但是如果你需要经常使用C++调用C#模块,C#调用C++模块,Javascript调用C++的模块的话,这本书看一下还是有必要的。 对神一样的人来说,这本书只是基础而已,都是很表层的东西。对于咱们为了活命的,这本书就是一本...
本文试着在C++中不使用任何扩展技术模拟C#(或其他语言)中的属性特征。大多数在C++实现属性的库和编译器使用扩展技术,如Managed C++或C++ Builder,或者他们使用如通常函数的set和get方法,但那不是属性。 详述 ...
它用C语言写成, 并且能为多种语言所调用,例如C语言,C++,XSH。C#, Python,Kylix/Delphi,Ruby,和PHP等。Perl中也可以使用XML::LibXML模块。它最初是为GNOME开发的项目,但现在可以用在各种各样的方面。libXML ...
18.2 在 C #代码中调用 C++和 VB 编写的组件 .240 18.3 版 本 控 制 .249 18.4 代 码 优 化 .252 18.5 小 结 .254 第五部分 附 录 .255 附录 A 关 键 字.255 附录 B 错 误 码.256 附录 C .Net 名字空间...
1、stkX是STK help中的一部分,主要讲述与外部程序(C++/C#/MATLAB等)的接口设计。 在stkX→Tutorials→PDFs中给出了一些如何调用STKX模块的一些简单例子。 2、STK覆盖模块教材.pdf STK链路模块教材.pdf STK...
但是当他们看完C#的文档后又开始高兴起来,因为C#是如此简单:事实上,简单正是C#最大的特点。除此之外,它还具有现代、面向对象、类型安全、版本控制、兼容、灵活等特点。详细介绍请参阅rainbow(一个长着胡子的...
因为 aardio奇特的语言特性,aardio的胶水能力极强,在aardio中可以非常方便的调用C语言、C++、C#、Java、Python、Javascript、Node.Js、Flash ActionScript、PHP、VBScript、NewLISP、Delphi、Go语言 .........
1.C/C++软件界面开发框架,基于Windows平台的Win32开发,不需要其他的库支持,从而缩小软件体积,提高效率,增强软件的兼容性. 2.采用DirectUI设计思想,在窗口内无子窗口,界面元素都是一个逻辑上的区域,以方便开发出炫彩...
模块使用,名字为奇易模块, 项目由2017年开始进行第一次封装,由于C#开发DLL调用比较麻烦,特意再次封装为C++动态库进行调用。由于之前是专门为易语言而开发的dll,大部分的功能传递都是通过指针进行完成,对于其它...