2

我有一个用 C# 制作的 DLL,这个 DLL 包含一些类似 Creator 的类。

我需要加载这个 DLL 并在 C++ 非托管中使用 Creator 类,

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

我需要这样的东西:


CreatorInstance->Init();

这可能吗?

4

4 回答 4

4

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

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

于 2009-07-10T17:17:54.837 回答
2

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

其他三个选项是:

1) 使用 COM 互操作通过 COM 包装 .NET 类

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

3) 您可以托管 Mono 运行时,并使用它来调用您的托管代码。有关这方面的详细信息,请参阅此页面

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

于 2009-07-10T17:31:51.470 回答
1

这是一篇有趣的文章,介绍了如何在不使用 /CLR 选项的情况下完成此操作

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

效果很好。

于 2009-07-10T18:29:17.313 回答
0

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

于 2009-07-11T04:33:37.877 回答