1

基本上我有一堆非托管的 VC++ 静态库。而使用这些的 VC++ GUI 应用程序是基于 MFC 的。目标是用 C# 中完成的 GUI 应用程序替换 GUI 应用程序,但使用所有相同的静态库。问题是这是否可能,如果是,那么实现这一目标的正确方法是什么?

建议,有人吗?谢谢。

4

2 回答 2

2

是的,可以将 C++/CLI 用于托管 C++ 代码。您将编写一个 C++/CLI WinForms 应用程序,并按照正常方式简单地链接到您的静态库中。

但是,如果 GUI 代码和库之间有很多紧密耦合,那么这可能会有点混乱。您将需要担心在托管和非托管世界之间转换某些数据类型,尤其是字符串。如果您需要传递托管对象/数组

Wikipedia上有很好的介绍, MSDN上有很多文档。

于 2008-10-07T14:28:49.553 回答
1

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

于 2008-10-07T15:02:34.963 回答