基本上我有一群非托管VC++静态库。而使用它的VC++ GUI应用程序则基于MFC。 目标是用C#中完成的应用替代GUI应用,而使用所有相同的静态库。 问题是,如果这甚至是可能的,如果是的话,那么什么是正确的方式来实现呢?非托管vC++静态库和C#GUI应用程序
建议,任何人? 谢谢。
基本上我有一群非托管VC++静态库。而使用它的VC++ GUI应用程序则基于MFC。 目标是用C#中完成的应用替代GUI应用,而使用所有相同的静态库。 问题是,如果这甚至是可能的,如果是的话,那么什么是正确的方式来实现呢?非托管vC++静态库和C#GUI应用程序
建议,任何人? 谢谢。
Rob是正确的 - 您可以完全在C++/CLI中完成,但我们发现将一些本机类包装到托管的WinForms用户控件类中非常有用。此托管类包含本机类的一个实例,不仅在方法调用中编组数据(如字符串),而且还将本机回调(用boost :: signal实现)转换为.NET事件。此信号事件转换的整个解决方案在this question中详细说明。 .NET WinForms用户控件还捕获本地异常并将它们重新抛出为托管异常,并且还将非.NET接口(返回迭代器的方法)翻译为更多.NET风格的接口,您可以在其中阅读this question。然后,我们可以直接在WPF应用程序中使用.NET类。请注意,如果您将它封装为.NET类,它将不得不从DLL中使用C#。
诀窍还在于GUI应用程序必须从这些静态库中扩展一些对象,才能对从库调用的某些回调方法作出反应。这会工作吗? – Ma99uS 2008-10-07 14:32:50