在 C# 中加载 mfc DLL
Posted
技术标签:
【中文标题】在 C# 中加载 mfc DLL【英文标题】:Load mfc DLL in C# 【发布时间】: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
【问题讨论】:
【参考方案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 包装器。见***.com/questions/2691325/…
谢谢。但是由于VS支持混合代码(托管/非托管),真的有必要编写一个包装器吗?!以上是关于在 C# 中加载 mfc DLL的主要内容,如果未能解决你的问题,请参考以下文章