永发信息网

C++能否不使用clr调用C#的dll

答案:2  悬赏:10  手机版
解决时间 2021-03-03 02:11
  • 提问者网友:却不属于对方
  • 2021-03-02 16:37
如题,项目组用C#写了公共模块要集成在现有的C++的代码中,提供了C#创建的dll
在网上查了方法,都说需要用C++的/clr方法,但是如果更改项目工程属性会有其他影响,所以想知道这个公共模块在项目中的可行性,故有此一问,求大神解答,给出具体方法
最佳答案
  • 五星知识达人网友:蓝房子
  • 2021-03-02 17:22
如果你想用C++调用C#封装的dll,那么这个C++项目必须有公共语言运行时(CLR)支持,不然你的C#dll无法被解释为机器语言(这么说有点不准确,但基本是这个意思)...CLR之于C#就像Java虚拟机之于Java,没有Java虚拟机Java程序跑不动,没有CLR支持的C#程序同样跑不动...
全部回答
  • 1楼网友:轻熟杀无赦
  • 2021-03-02 18:54
c#可以直接调用ref类,和.net类库内其他类一样 ref类的变量(字段)不能使native c++类类型,可以是指向native c++类类型对象的指针 ref类内部可以直接使用native c++类类型,只需要导入相关头文件即可 ref类的函数(方法)参数可以直接使用native c++类类型,但是c#无法理解这些参数 也就是说,public函数不要用native c++类类型作为参数类型 你要是进行基本类型转换,将native类型转成clr类型(c#可直接使用的类型),可以参考msdn overview of marshaling in c++ https://msdn.microsoft.com/en-us/library/bb384865.aspx
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯