社区
C#
帖子详情
用C#编写生成的.dll能不能被C++使用呢?
Jonix
2017-03-27 10:57:26
问题出在C#的代码没有 .h 吧?有没有办法自动生成 .h呢??
...全文
693
4
打赏
收藏
用C#编写生成的.dll能不能被C++使用呢?
问题出在C#的代码没有 .h 吧?有没有办法自动生成 .h呢??
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
以专业开发人员为伍
2017-03-28
打赏
举报
回复
在 20 年前,在 windows 平台上,如果要开发中间件,让各种语言的程序可以互通,那么要按照 COM 规范来封装和发布,而不是什么“调用c/c++ 的 DLL”。它的目标是解决不同编程语言的组件的注册、数据通讯、跨进程消息通讯等等问题。而在各种编程语言程序中去讨论“调用c的DLL”实际上是比较底层的做法,各种更加规范和容易互通的编程语言要向下、八仙过海地施展各种招数去调用底层的东西。 在10年前,发布 .net 之后,实际上你的 c++ 程序员就要学习如何一键打包成 .net 类库,如何调用 .net 类库了,从而把 c++ 中各种比较好的能力是放到更大的平台。在 csdn 论坛上许多帖子喜欢讨论 .net 程序调用 c 程序的方式,这其实只是在小程序中讨论底层的做法,没有把一个公司的“全部语言的中间件规范”思想建立起来。
以专业开发人员为伍
2017-03-28
打赏
举报
回复
可以按照 COM 规范封装,也可以按照 .net 规范来封装。实际上 c/c++ 是比较底层的,如果你要跨平台的中间件能被各种系统(例如Office 中广泛应用的 VBA)更方便地调用,自然要以一个比较高层的封装模式为基础。 当你的 c++ 程序封装为 COM 组件或者 .net 组建发布时(.net 最初的目的,其实就是“发布一种更好的 COM”),其目标就是为了避免纠缠在编程语言上的,为了让各种语言编译出来的 DLL 都有统一的交互模式,避免纠结“.h 文件”。而纠结“.h文件”,显然是又回到了30年前比较底层的 c 概念。
threenewbee
2017-03-27
打赏
举报
回复
可以包装成activex dll,vc++用类型库引用调用。
xuggzu
2017-03-27
打赏
举报
回复
c#编译的dll并不是常规的动态链接库,而是托管组件,文件结构和c++写的常规dll截然不同,因此普通方法无法调用,如果非要用,过程很麻烦,具体百度有例子。但我不推荐如此使用,建议楼主变换思路。况且c++本身不适合做复杂的人机界面,而一般用于算法和快速数据处理等,相对的,c#擅长人机界面设计,所以一般都是用c#调用c++编写的dll。
.net
生成
dll
在arcmap中添加的问题
这两天一直在搞ArcMap的
dll
文件, 上个星期搞的一个是用
C++
编写
的
dll
,
生成
的
dll
文件是com组件的,直接用regsvr32命令注册,然后就可以再ArcMap中添加工具进行
使用
啦。 昨天给我一个用
C#
写的
dll
,结果
不能
添加进ArcMap的工具栏中。前前后后查了大半天的资料,至少知道如何解决了。 首先,如果用
c#
写的
dll
是.net组件的,虽然.Net 的组件与
C#
调用
C++
的
dll
方法
C#
调用
C++
的
dll
总归可以有两种方法: 1、非托管
C++
创建的
dll
库,需要用静态方法调用; 2、直接
使用
CLR,
生成
托管
C++
dll
库。
Qt程序中调用
C#
编写
的
dll
最近在
使用
Qt整合以前的一个工具时,发现有几个
dll
是采用
C#
写的,当然可以把
C#
写的
dll
重新在Qt中用
C++
写,虽然这是几个
C#
写的
dll
的函数接口
使用
的参数都比较简单,只用了int和string类型等,但在函数内部却还
使用
了
C#
的专用一些类,如果重写还是很麻烦,就查找了一些文章,多数都是说采用把
C#
写的
dll
采用COM注册方式让Qt调用,但是这样又要重新编译以前的
C#
项目,实在是很麻烦,所以...
在
C#
中
使用
C++
编写
的类
现在在Windows下的应用程序开发,VS.Net占据了绝大多数的份额。因此很多以前搞V
C++
开发的人都转向用更强大的VS.Net。在这种情况下,有很多开发人员就面临了如何在
C#
中
使用
C++
开发好的类的问题。下面就用一个完整的实例来详细说明怎样用托管
C++
封装一个
C++
类以提供给
C#
使用
。 比如,现在有一个工程名为NativeCpp
Dll
的由
C++
编写
的
DLL
,里面输出了一个CPe
C#
调用C/
C++
编译
生成
的
dll
库
1 在
C#
中调用C/
C++
的动态链接库( .
dll
文件)的一般格式 using System.Runtime.InteropServuces; //这是必须引用的命名空间(添加在文件中的其他using 下) 引用原型: [
Dll
Import("user32.
dll
")] public static extern ReturnType FunctionName(t...
C#
111,129
社区成员
642,535
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章