在返回c#后保持类的状态在c++中
本文关键字:状态 c++ 返回 | 更新日期: 2023-09-27 18:09:41
我使用c++作为后端,c#作为前端,我使用pinvoke互操作机制在本机代码和托管代码之间进行通信。
现在的问题是c++后端实际上有两部分计算,初始化部分和动态计算部分。初始化只需要做一次,但需要很长时间,而动态计算部分只需要很短的时间,但需要一遍又一遍地做。
c++代码要保持原样,不能重写成c#代码。
我可以随意修改c++和c#代码。
我知道如何做静态互操作,但我不知道如何做这种状态全互操作。任何想法?
您可以在c++/CLI中为c++类编写一个包装器,从而提供真正的CLR类型。你可以在c#中无缝地管理它们的生命周期。
- 在网上有很多关于它的信息:这里或在这里(只需谷歌"c++/CLI包装器")。
- 当然,在stackoverflow:这里。
除非有一些漂亮的工具,否则您将不得不自己编写这个包装器。
或者,您可以在c++类周围编写一个包装器函数(或其集合),可能只将所需的最小功能暴露为"C"函数。然后,您将从init-function中传递出一个"HANDLE"(Int32, IntPtr,等等),并要求它作为compute-function的输入。您必须在包装器函数内部管理这些内容(您可能还希望提供清理函数)。