C++项目中采用CLR的方式调用C#编写的dll

1、注意事项:在编写C#DLL类库时,最好不要出现相同的命名空间,否则在C++中调用可能会出现编译错误。
2、将C#的源码生成的“dll”文件复制到C++项目中的Debug目录下
3、将C++项目属性设置为公共语言运行时支持
4、在项目中导入dll文件和引用民命空间

#using "../debug/xxx.dll"
using namespace xxxx;

5、实例化C#对象:CL ^cl = gcnew CL();

6、调用C#带out string[] 参数的方法:intPowerOff(out string[] FrameAry)

array<String^>^  FrameAry = gcnew array<String^>(0);
int result = cl->PowerOff(FrameAry);
printf("上行报文:%s", FrameAry[0]);

7、调用带int类型和string类型的方法

int r = cl->InitSetting(1, 3000, 200, "193.168.18.11", 10004, 20000);

8、调用带int[] 、Single[]类型参数的方法:boolSetHarmonic(int Phase,int[] int_XTSwitch,  Single[] sng_Value, Single[] sng_Phase,out string[] frameAry)

array<String^>^  FrameAry = gcnew array<String^>(0);
array<float>^  floatArray = gcnew array<float>(1);
array<int> ^ intArray = gcnew array<int>(1);
int n = cl->SetHarmonic(1, intArray, floatArray, floatArray, FrameAry);

原文地址:https://www.cnblogs.com/netlws/p/9050184.html

时间: 2024-10-09 00:53:56

C++项目中采用CLR的方式调用C#编写的dll的相关文章

使用clr 调用C#编写的dll中的方法的全解释

使用clr 调用C#编写的dll中的方法的全解释1.数据库初始化:将下面这段代码直接在运行就可以初始化数据库了exec sp_configure 'show advanced options', '1';goreconfigure;goexec sp_configure 'clr enabled', '1'goreconfigure;exec sp_configure 'show advanced options', '1'; go ALTER DATABASE DB_Name set TRUS

vb做界面调用c编写的dll

没有真正的做过C++项目,如何在短时间内完成模型软件的方法,成为前段时间需要考虑的问题,通过vbs脚本到vb到gis一直到如今的建模软件,我想到用比较容易上手的吧vb来做界面,(网上有的一些前辈也是这么应用采纳的,极大的肯定了我的方向),核心计算部分用的是c编写的dll,计算引擎直接利用epanet,数据库上打算先放置一边,留着后续升级的时候进行采用,因为定位的是一种辅助调度分析的工具,因此想着先运行起来. vb环境:VB6.0(企业版) C开发环境:DEV C++ 数据库:SQL2008 vb

C#动态调用C++编写的DLL函数

C#动态调用C++编写的DLL函数 动态加载DLL需要使用Windows API函数:LoadLibrary.GetProcAddress以及FreeLibrary.我们可以使用DllImport在C#中使用这三个函数. [DllImport("Kernel32")] public static extern int GetProcAddress(int handle, String funcname); [DllImport("Kernel32")] public

Android项目中JNI技术生成并调用.so动态库实现详解

生成 jni方式有两种:一种是通过SWIG从C++代码生成过度的java代码:另一种是通过javah的方式从java代码自动生成过度的C++代码.两种方式下的步骤流程正好相反. 第一种方式:由于需要配置SWIG环境,有点麻烦了,所以往往大家不采用这个途径,参照博文http://my.oschina.net/liusicong/blog/314162. 第二种方式:javah的方式则通过shell指令就可以完成整个流程,该过程大概包括以下步骤: 编写 Java 代码.我们将从编写 Java 类开始

项目中遇到的进程间通信方式

1)socket:经常遇到,不讲了 2)信号:使用kill发送信号,signal,settimer等系统调用都能对另一个进程发送信号,达到了进程间通信的目的. kill(p1,16);    /*向进程号为p1的进程 发中断信号16*/ signal(SIGINT,go); /*接收到SIGINT信号后,转go函数去处理它*/ 3)共享内存:使用mmap系统调用能够做到共享内存,mmap的使用方式是以fd为入参,两个进程都打开一个文件名,并用mmap将这个fd映射到各自的进程环境,使用mmap反

JavaScript中以构造函数的方式调用函数

转自:http://www.cnblogs.com/Saints/p/6012188.html 构造器函数(Constructor functions)的定义和任何其它函数一样,我们可以使用函数声明.函数表达式或者函数构造器(见以前的随笔)等方式来构造函数对象.函数构造器和其它函数的区别在与它们的调用方式不同. 要以构造函数的方式调用函数,只需要在调用时在函数名称前加new 关键字,比如:function whatsMyContext(){ return this; }; 调用:new what

node.js项目中使用coffeescript的方式汇总

Coffeescript作为Javascript低调的小弟实在是有过人之处,使用它可以增进开发效率,减少代码错误, 关键是能大幅提升开发愉悦感.我越来越觉得只要可能就在自己的项目中把coffee用起来. 然而也许你和我一样,在了解完coffeescript的语法后准备一试身手的时候,却面对如何把它引入项目而犯起愁来. 其实coffeescript这种语言因其可以一对一地翻译为javascript的特性,使用起来其实非常灵活. 将其引入项目的方式也不止一个.这里,我先就node项目引入coffee

Spring依赖注入——java项目中使用spring注解方式进行注入

注解注入顾名思义就是通过注解来实现注入,Spring和注入相关的常见注解有Autowired.Resource.Qualifier.Service.Controller.Repository.Component. Autowired是自动注入,自动从spring的上下文找到合适的bean来注入 Resource用来指定名称注入 Qualifier和Autowired配合使用,指定bean的名称 Service,Controller,Repository分别标记类是Service层类,Contro

jna调用c编写的dll

我们团队目前开发的产品是用java语言编写的,大家都知道,java编写的代码随便都可以被反编译,导致别人可能会看到你“裸奔”的样子.所以,为了避免这种安全隐患,团队最终商定,将部分核心代码改用c语言编写,封装为dll,再由java调用. 于是乎,我们就开始jna初探.今天通过各种百度,终于做了个例子出来,在此做个记录,以备后路之需. 1.构造一个dll 由于本机的vs2015没有安装c++模块,所以采用Dev-C++开发,具体步骤如下: 1.1.新建项目,选择DLL,C项目 1.2.删除自动生成