C++调用C#库简单例程

有些时候,为了使用别人已经写好的C#库文件,我们需要使用C++调用C#库文件; 以下做了一简单的调用工程,步骤如下:

1、准备C#库 (dll文件)

1)创建C#库:

2)编写C#类:

3)配置C#库工程相关配置

(1)命名空间配置,输出库文件名配置:

(2)库文件输出路径:

2、准备C++工程:

1)创建C++工程:

2)CLR支持(公共语言运行支持):

3)引用和调用C#代码:

4)编译直接运行:

5)运行调试:

3、其他补充说明:

1)为什么使用gcnew 而不使用 new ?

C++/CLI中使用 gcnew 关键字用来表示 在托管堆上分配内存,并且区分其他指针的区别,使用 ^ 来代替 * 作为指针含义, 语义上大致如下:

(1)、gcnew返回的是一个句柄(handle), 而new 返回的是实际的内存地址

(2)、gcnew创建的对象由虚拟机托管,而new创建的对象必须自己来管理和释放

在此不是有C++本身来分配内存空间,而是由其他虚拟机托管分配,并且不需要C++程序来释放空间

如果想了解CLI更详细情况,可以参考:http://www.codeproject.com/Articles/6882/A-first-look-at-C-CLI

2)使用#using 宏引入dll库文件, 而不是 #pragma comment(lib, "")

后面主要用于引入C/C++库文件

3)执行时可能会出现以下问题:

主要是由于exe程序加载的dll文件不存在或未找到,可以:

将C#的库文件和pdb文件 输出到一个公共的文件夹下:如: ..\Out\Debug\ 文件夹

将C++的编译程序exe和pdb文件也输出到该公共文件夹下,

Linker配置:

4、例程源码:

http://download.csdn.net/detail/vagent/8953189

时间: 2024-10-29 23:48:52

C++调用C#库简单例程的相关文章

调用MyFocus库,简单实现二十几种轮播效果

一.首先点击这里下载myFocus库文件,标准文件库就行了,很小仅仅1.4M. myFocus库有以下的好处: a . 文件小巧却高效强大,能够实现二十几种轮播的效果. b . 极其简单的使用,只需要调用就可以使用,下面会介绍方法. c . 灵活的设置,很多参数可以提供设置,比如不想要文字提示,设置高度为0....更多参数适用请见网站教程页面. 二.下载下来之后,解压,看到一个文件夹,如下图所示: 对此文件夹进行一下说明:a . 打开js文件夹,然后有个js文件,就是我们最开始要调用的myfoc

一个简单的C共享库的创建及python调用此库的方法

/*********************************************************************  * Author  : Samson  * Date    : 02/02/2015  * Test platform:  *              3.13.0-24-generic  *              GNU bash, 4.3.11(1)-release  * ************************************

03_有监督学习--简单线性回归模型(调用 sklearn 库代码实现)

有监督学习--简单线性回归模型(调用 sklearn 库代码实现)0.引入依赖1.导入数据(data.csv)2.定义损失函数3.导入机器学习库 sklearn4.测试:运行算法,从训练好的模型中提取出系数和截距5.画出拟合曲线6.附录-测试数据 有监督学习--简单线性回归模型(调用 sklearn 库代码实现) 0.引入依赖 import numpy as npimport matplotlib.pyplot as plt 1.导入数据(data.csv) points = np.genfro

在QQ群里有人提问有没有C语言的XML解析,偶然想到了这个问题:C++调用C库,简单试验:

我的电脑Mac,系统MaveRicks. 写一个C代码: #include<stdio.h> void hello(){ printf("Hello, this is from C Language ~\n"); } 编译一个库文件: franklinMacmini:~ git$ gcc --shared -o libhello.so hello.c franklinMacmini:~ git$ ll -tr drwx------+ 3 git staff 102 Sep

Python常用的库简单介绍一下

Python常用的库简单介绍一下fuzzywuzzy ,字符串模糊匹配. esmre ,正则表达式的加速器. colorama 主要用来给文本添加各种颜色,并且非常简单易用. Prettytable 主要用于在终端或浏览器端构建格式化的输出. difflib ,[Python]标准库,计算文本差异 . Levenshtein ,快速计算字符串相似度. Chardet 字符编码探测器,可以自动检测文本.网页.xml的编码. shortuuid ,一组简洁URL/UUID函数库. ftfy ,Uni

用ffi调用.dylib库

有一个特性需要调用第三方库libsync,在node.js里可以用ffi来实现 首先稍微包装了一下,ffi也是支持异步调用的,但是API比较麻烦,包装以后调用起来会比较容易 var ffi = require("ffi"); var lib = ffi.Library('./libsync', { 'file_chunk': ['int', ['string', 'string', 'int']], 'file_delta': ['int', ['string', 'string',

Rsession让Java调用R更简单

Rsession让Java调用R更简单 R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大. R语言作为统计学一门语言,一直在小众领域闪耀着光芒.直到大数据的爆发,R语言变成了一门炙手可热的数据分析的利器.随着越来越多的工程背景的人的加入,R语言的社区在迅速扩大成长.现在已不仅仅是统计领域,教育,银行,电商,互联网….都在使用R语言. 要成为有理想的极客,我们不能停留在语法上,要掌握牢固的数学,概率,统计知识,同时还要有创新精神,把R语言发挥

调用第三方库出现的问题

运行一个需要调用第三方库的小程序本应该是很简单的事情,但是要想顺利地把程序跑起来首先要迈的第一道坎就是正确的配置路径和编译环境.鉴于前两次在开始调用时,状况百出而我却无从下手,所以非常有必要回顾一下最基本的问题. 在windows 环境下,从编写到运行需要两个步骤:① 首先写好源文件(.c),经过cl.exe编译器编译,从而生成了.obj 目标文件[编译] ② 生成的目标文件(.obj)再结和库文件(.lib)经过link.exe 链接器从而生成可执行文件.[链接][运行]*.h   *.lib

Python调用C库

Python调用C库 Python可以利用ctypes库很方便地调用C的库函数. C库例程: # file: a.c int sum(int a, int b){   int t = 0;   int i = 0;   for(; i < b;i++) t += a;   return t; } shell> gcc -fPIC -g -c -Wall a.c && gcc -shared -Wl,-soname,liba.so -o liba.so a.o   Python程