C++ 如何 可以导入C#制作的DLL吗?

发布于 2024-07-26 15:27:46 字数 226 浏览 7 评论 0原文

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

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

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

我需要这样的东西:


CreatorInstance->Init();

这可能吗?

I have a DLL made in C#, this DLL contains some clases like Creator.

I need to load this DLL and use Creator class in C++ unmanaged,

so Is there some way to create that instance or must I load just the functions exposed?

I need something like this:


CreatorInstance->Init();

Is this posible?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

ζ澈沫 2024-08-02 15:27:46

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

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

Most of what you need can be found here: http://msdn.microsoft.com/en-us/library/x0w2664k%28VS.80%29.aspx

Primarily, you need to learn about the /clr switch for C++ compilation. Then you need to understand the C++ extensions that Microsoft added to allow for mixed assemblies. (A C++ "pointer" to a managed class would use p^ instead of p*, and so on.)

江挽川 2024-08-02 15:27:46

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

其他三个选项是:

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

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

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

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

John Fisher's approach using C++/CLI is by far the easiest means of handling this, but it is not the only means.

The other three options are:

1) Use COM interop to wrap the .NET class via COM

2) You can host the CLR in your native, unmanaged application, and call into it. For details, see this article.

3) You can host the Mono runtime, and use it to call your managed code. For details on this, see this page.

Option 2 and 3 are very similar, but IMO, 3 is easier than 2.

感性不性感 2024-08-02 15:27:46

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

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

效果很好。

Here is an interesting article on how you should be able to accomplish this without using the /CLR option

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

Works pretty well.

甚是思念 2024-08-02 15:27:46

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

First of all, it is possible and you do not "have" to use CLI or the /clr switch. Using the good old COM architecture you can do it pretty easily http://msdn.microsoft.com/en-us/library/zsfww439.aspx. Understanding the way COM works might be the biggest challenge here, but it's usefull once you know it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文