基本上我有一堆非托管的 VC++ 静态库。而使用这些的 VC++ GUI 应用程序是基于 MFC 的。目标是用 C# 中完成的 GUI 应用程序替换 GUI 应用程序,但使用所有相同的静态库。问题是这是否可能,如果是,那么实现这一目标的正确方法是什么?
建议,有人吗?谢谢。
基本上我有一堆非托管的 VC++ 静态库。而使用这些的 VC++ GUI 应用程序是基于 MFC 的。目标是用 C# 中完成的 GUI 应用程序替换 GUI 应用程序,但使用所有相同的静态库。问题是这是否可能,如果是,那么实现这一目标的正确方法是什么?
建议,有人吗?谢谢。
Rob 是正确的 - 您可以完全在 C++/CLI 中完成,但我们发现将一些本机类包装在托管的 WinForms 用户控件类中最有用。这个托管类包含本机类的一个实例,不仅在方法调用中编组数据(如字符串),而且还将本机回调(使用 boost::signal 实现)转换为 .NET 事件。此问题中详细说明了此信号事件转换的整个解决方案。.NET WinForms 用户控件还捕获本机异常并将它们作为托管异常重新抛出,并将非 .NET 接口(返回迭代器的方法)转换为更 .NET 风格的接口,您可以在这个问题. 然后我们可以直接在 WPF 应用程序中使用 .NET 类。请注意,如果将其包装为 .NET 类,则必须放入 DLL 中才能从 C# 中使用。