【问题标题】:Load mfc DLL in C#在 C# 中加载 mfc DLL
【发布时间】:2011-05-09 11:04:19
【问题描述】:

我有一个 mfc dll,我喜欢将它加载到 C 语言程序中!

我的源码教程: http://blogs.msdn.com/b/jonathanswift/archive/2006/10/03/dynamically-calling-an-unmanaged-dll-from-.net-_2800_c_23002900_.aspx

问题是他在函数中使用原始数据类型(例如int)来加载,但是 我需要自己的类型( getInstance() 的类对象)!

有没有简单的方法可以做到这一点?

谢谢你,问候 leon22

【问题讨论】:

    标签: c# dll object mfc loadlibrary


    【解决方案1】:

    您不能在 C# 项目中使用 C++ 类。实际上,您不能在使用不同编译器编译的任何项目中使用 C++ 类,例如不同版本的 MSVC。

    您最好的方法是使用 COM,它是一种旨在解决这个问题的二进制接口标准。

    【讨论】:

    • 是的,这个。我不确定你为什么要使用 MFC DLL。 MFC 的最大好处是它将 Windows API 包装到类中。 .NET 框架为此提供了 WinForms 或 WPF。尤其是使用GetInstance 毫无意义。
    • 我有一个旧的 mfc dll,我们需要在新的 C 语言程序中使用! (getInstance() 是一个自己的方法来返回类对象)但是,最好的方法是使用 COM,不是吗?
    • @leon22 除了 COM,您可以尝试使用名为托管 C++ 或 C++/CLI 的 C++ 的 .net 版本重新编译,我不记得哪个是旧名称,哪个是新名字!我的猜测是 COM 会让你更快地到达你需要的地方。
    • 如果您以前从未编写过 COM 服务器,COM 并不是最好的方法,它有一个陡峭的学习曲线。如果可以将 MFC 代码展平为非 OOP 接口,请首先考虑简单的 C 函数。如果这太难了,那就写一个 C++/CLI 包装器。见stackoverflow.com/questions/2691325/…
    • 谢谢。但是由于VS支持混合代码(托管/非托管),真的有必要编写一个包装器吗?!
    猜你喜欢
    • 2016-10-29
    • 1970-01-01
    • 2010-12-13
    • 2010-11-16
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多