C ++如何导入C#中的DLL?

时间:2009-07-10 17:10:21

标签: c# c++ unmanaged dllimport

我有一个用C#编写的DLL,这个DLL包含一些像Creator一样的文章。

我需要加载此DLL并在C ++中使用Creator类unmanaged,

那么是否有某种方法可以创建该实例,或者我必须只加载公开的函数吗?

我需要这样的东西:


CreatorInstance->Init();

这是可能的吗?

4 个答案:

答案 0 :(得分:4)

您可以在此处找到您需要的大部分内容:http://msdn.microsoft.com/en-us/library/x0w2664k%28VS.80%29.aspx

首先,您需要了解用于C ++编译的/ clr开关。然后,您需要了解Microsoft添加的C ++扩展以允许混合程序集。 (托管类的C ++“指针”将使用p ^而不是p *,依此类推。)

答案 1 :(得分:2)

John Fisher使用C ++ / CLI的方法是迄今为止最简单的处理方法,但它不是唯一的方法。

其他三个选项是:

1)使用COM interop通过COM

包装.NET类

2)您可以在本机非托管应用程序中托管CLR,然后调用它。有关详细信息,请参阅this article

3)您可以托管Mono运行时,并使用它来调用托管代码。有关详细信息,请see this page

选项2和3非常相似,但IMO,3比2更容易。

答案 2 :(得分:1)

这是一篇有趣的文章,说明如何在不使用/ CLR选项

的情况下完成此任务

http://www.codeproject.com/KB/cs/ManagedCOM.aspx

效果很好。

答案 3 :(得分:0)

首先,有可能并且您没有“使用”CLI或/ clr开关。使用良好的旧COM架构,您可以非常轻松地完成http://msdn.microsoft.com/en-us/library/zsfww439.aspx。理解COM的工作方式可能是最大的挑战,但是一旦你知道它就会很有用。