繁体   English   中英

如何在vc ++中使用c#Dll?

[英]How to use c# Dll in vc++?

我使用命令行(csc)创建了一个dll。 假设dll包含Add(int,int)方法。 现在我想在vc ++中使用add函数?

这该怎么做?

对你的帮助表示感谢。

这就是我在做的事情。

vcproj; 对于这个项目,我有右键单击和链接器部分添加其他依赖项。添加dll所在的路径。

main.cpp中

using namespace Test

void main()

{

  demo d;

  d.add(5,5);

}

错误命名空间测试不存在。

怎么解决这个?

我需要在非托管代码中使用该DLL

你的C#程序集需要ComVisible属性(在其他一些东西中)。

[assembly: ComVisible(true)] 

这里有一个指南

从MSDN论坛从非托管C ++调用C#

你想要做的只是编译你想要加载C#code / clr的文件,然后使用C ++ / CLI调用。 您的应用程序的其余部分将保持原生状态,而您编译/ clr的那些cpp文件将混合使用本机和CLR。 您应该能够使用C ++ / CLI语法调用C#库。

一旦在文件的cl.exe命令行上抛出/ clr,就可以在该文件中调用所需的任何托管代码,无论它是用VB.net,C#还是C ++ / CLI编写的。 这是迄今为止你想做的最简单的方法(从你原生的C ++应用程序中调用C#代码),虽然它确实有其警告和限制。 总的来说,“它只是工作”。 而且,它比p / invokes更快。

这在很大程度上取决于您正在构建的C ++应用程序的类型。 如果要构建C ++ / CLI程序集,则需要确保项目具有对C#DLL的引用。 一旦完成,您应该能够按照书面形式键入代码,假设您具有Demo的定义,就像这样。

namespace Test {
  public class demo {
    public void add(int left, int right) { 
      ...
    }
  }
}

如果要构建正常的,非托管的C ++项目,则必须使用COM interop来访问程序集。 这涉及使C#项目中的演示类型COMVisible并将其注册到COM互操作。 之后,您可以像任何其他COM组件一样访问它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM