如何在vc ++中使用c#Dll?
我使用命令行(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的引用。 一旦完成,你应该能够按照书面forms输入代码,假设你有一个Demo的定义,就像这样。
namespace Test { public class demo { public void add(int left, int right) { ... } } }
如果要构建正常的,非托管的C ++项目,则必须使用COM interop来访问程序集。 这涉及使C#项目中的演示类型COMVisible并将其注册到COM互操作。 之后,您可以像任何其他COM组件一样访问它。