Winapi 纯Win32 API应用程序(无框架),需要访问.NET组件

Winapi 纯Win32 API应用程序(无框架),需要访问.NET组件,winapi,com,com-interop,Winapi,Com,Com Interop,最佳技术是什么?在COM中包装.NET组件(用.NET3.5编写的类)并在Win32中实例化?组件具有事件,因此必须支持组件驱动的回调到Win32 API应用程序。这取决于您的首选项和.NET组件的设置方式 在COM中封装它很好,并为您提供了一个基于对象的接口,这通常是很好的。您还可以得到一个类型库,如果接口很复杂,它会很好 对于具有简单接口的API,我通常更喜欢使用C++/CLI制作包装器。然后包装器可以直接访问.NET组件,您可以使用_declspec(dllexport)轻松导出包装器函数

最佳技术是什么?在COM中包装.NET组件(用.NET3.5编写的类)并在Win32中实例化?组件具有事件,因此必须支持组件驱动的回调到Win32 API应用程序。

这取决于您的首选项和.NET组件的设置方式

在COM中封装它很好,并为您提供了一个基于对象的接口,这通常是很好的。您还可以得到一个类型库,如果接口很复杂,它会很好

对于具有简单接口的API,我通常更喜欢使用C++/CLI制作包装器。然后包装器可以直接访问.NET组件,您可以使用_declspec(dllexport)轻松导出包装器函数。设置这种类型的包装器通常比设置COM更快

以下是一些您可能会发现有用的链接:


唯一符合您规范的解决方案是COM。

事实并非如此。C++/CLI包装器也可以工作。Win32应用程序必须传递一个指向包装器的函数指针,包装器才能调用,但它可以正常工作。这将是太多的工作,但包装dll也可以使用其他方法,如RPC@dscaefferC++/CLI包装器可以工作,但OP想要纯Win32。我相信他是说他想要应用程序使用纯Win32,而不是包装器,但如果不是,那么你是对的。如果他没有访问原始组件源的权限,那么他的COM包装器也不会是纯的Win32@dschaeffer你很可能是对的,但OP似乎对这个问题失去了兴趣。只有你和我!!