native c++/qt中如何调用c#dll

原创 2015年11月21日 13:03:52

native c++/qt中如何调用c#dll

具体需求:qt程序中调用c#提供的dll

开发环境:vs2013

参考链接:

链接1:https://support.microsoft.com/en-us/kb/828736,这个是微软的官方链接,在这个文档中Register the Managed DLLfor Use with COM or with Native C++是用不到的。

链接2:https://cppkid.wordpress.com/2009/01/02/how-to-call-a-managed-dll-from-unmanaged-code/  按照这个文档说明即可用

具体实现过程如下:

创建c#工程,设置工程属性:


配置说明:在buid选项中配置plateform target:x64,这个配置必须要和native c++程序中一致,如果native c++中是64位,那么这里必须是x64.同理x86.

这里还有一个选项是 any cpu,第一次编译的时候选的是这个,在native c++中调用时编译可以通过,但是运行时出现异常。

这个选项必须勾选,勾选之后编译会输出一个后缀为.tlb的文件。


这个文件是native c++调用的关键。

生成签名SNK文件,具体操作如下:

工程属性配置中,到signing项,勾选sign the assembly,选择new


在跳出的界面中:


反选,输入filename。点击ok即可。

此时会在solution中生成这个文件,


配置AssemblyInfo.cs文件,设置这几项:

[assembly:ComVisible(true)]

[assembly:AssemblyDelaySign(false)]

[assembly:AssemblyKeyFile("..\\..\\TestKeyPair.snk")]//确保这个文件位置正确

编写类文件ICalculator.cs:


编写ManagedClass.cs文件:


编译即可。

注意:

命名空间的名称要和项目名称,即生成的dll文件名称一致,否在在native c++中会提示找不到命名空间的错误。

生成文件如下:


在native中主要用TestComc.tlb。

 

下面是native c++工程,这里用的是qt。配置为64位。

具体使用方法如下:



源码下载链接:http://pan.baidu.com/s/1bnfYdtH

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Qt 一步一步实现dll调用(附源码)

前言:从上个月底因为新项目统一平台需要用Qt开发,就开始研究Qt,但是一直感觉没有入门,不知道为什么,很多功能实现了,但是知其然不知其所以然,就像现在设计的项目 使用插件进行开发,做软件开发大体...

DLL在Qt中的创建与使用

学习之前先了解一下链接库的基本知识链接库预备知识 库包含静态链接库 动态连接库 (动态装载:静态绑定与动态绑定) 目前以lib后缀的库有两种, 一种为静态链接库(Static Libary,以下简称“...

C# 调用Qt编写的控件

Qt 里面有很多优秀开源的项目,由于没有对应的.net版本,所以在C#写的winform项目中使用就变得异常困难。首先大多数人的思路就有两个,一是把Qt的项目编译成COM控件,通过COM控件使用,二是...

MFC 下调用Qt编写的含界面的dll

接到任务要做一个既可以在纠结了好几天了,

QT调用C#开发的ArcEngine的.net组件(1)

QT调用C#开发的.net组件,首先我来讲一下我们项目的背景:最初想开发一套跨平台的gis系统,原来一直使用mapobject20和qt,现在自然而然的要使用arcengine和qt进行,最初的实现没...
  • shaman1
  • shaman1
  • 2013年11月26日 10:52
  • 1370

C#创建COM组件,QT调用COM组件简单测试(VS2008+QT4.6.4)

一. C#创建组件: 1. VS2008新建一个项目,选择Visual C#, Class library 修改Properties下面的AssemblyInfo.cs文件,ComVisible属性设...

QT源码解析(五)QLibrary跨平台调用动态库的实现

 版权声明请尊重原创作品。转载请保持文章完整性,并以超链接形式注明原始作者“tingsking18”和主站点地址,方便其他朋友提问和指正。  QT源码解析(一) QT创建窗口程序、消息循环和WinMa...

Qt调用VC++生成的动态链接库

当前有VC++编译器生成的文件testdll.h,testdll.lib和

C++调用C# com组件:一个完整的的小例子

我们知道C#开发效率是非常高的,特别是做一些漂亮的页面就更适合用它了啊.如果你开发一个桌面应用程序即想性能好点又想页面漂亮点可以考虑用C++和C#一起用.反正现在Win7都集成NetFramework...
  • weiwenhp
  • weiwenhp
  • 2012年06月07日 14:34
  • 14667
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:native c++/qt中如何调用c#dll
举报原因:
原因补充:

(最多只允许输入30个字)