从C+中获取对象功能+;C代码# 我在C++中写了一个函数,调用旧的库中的函数。此函数用于创建一些内存,进行调用并销毁内存。为了优化这一点,我将创建一个对象,该对象将保留分配的内存,直到该对象被销毁。但是我将从C#调用这个函数,我不相信我可以导出一个类,只导出函数或变量

从C+中获取对象功能+;C代码# 我在C++中写了一个函数,调用旧的库中的函数。此函数用于创建一些内存,进行调用并销毁内存。为了优化这一点,我将创建一个对象,该对象将保留分配的内存,直到该对象被销毁。但是我将从C#调用这个函数,我不相信我可以导出一个类,只导出函数或变量,c#,c++,interop,object,C#,C++,Interop,Object,我的想法是这样的;将DLL视为一个类,并使用DLL范围内的本地变量指向内存。然后使用一个函数创建内存,调用辅助函数,在使用DLL时使用另一个函数销毁内存 这是一个好方法吗?有更好的方法吗?制作一个实现IDisposable的C#类。你可以在C++对象周围封装一个简单的C API,这样当你构造一个实例时,它返回一个指向C++类的指针,当你处理C类时,它就删除了指针。 您可以始终引用此指针来调用C++类的方法。< /p> 另一个好的选择是使用C++或CLI为C++类编写包装器。在这种情况下处理这种情

我的想法是这样的;将DLL视为一个类,并使用DLL范围内的本地变量指向内存。然后使用一个函数创建内存,调用辅助函数,在使用DLL时使用另一个函数销毁内存

这是一个好方法吗?有更好的方法吗?

制作一个实现IDisposable的C#类。你可以在C++对象周围封装一个简单的C API,这样当你构造一个实例时,它返回一个指向C++类的指针,当你处理C类时,它就删除了指针。 您可以始终引用此指针来调用C++类的方法。< /p>

另一个好的选择是使用C++或CLI为C++类编写包装器。在这种情况下处理这种情况要简单得多。

< P>我更喜欢在C++/CLI(以前托管C++)中编写托管包装,因为它更容易在C++端显式地实现与托管/非托管互操作性所需的东西,而C语言不会被P/Unjk样式代码污染。 Edit刚刚注意到您的评论“但是我将从C#调用此函数,并且不相信我可以导出一个类,只导出函数或变量。”


这不是完全正确的,C><强>可以< /St>从C++/CLI代码生成的程序集导入完整类。

< P>如果您愿意更改本机C++代码,您可以将其导出为C++可以使用的COM接口。< / P>您是否在同一个地方创建和销毁内存?可以提供一些示例的链接吗?e、 g.使用指向IDisposable的C类的指针,使用C++/CLI制作包装器。任何C++ +CLI示例都将用于第二种,您只需在C++ +CLI中使用托管类,而不是本地C++类。@ SMIT325-是的。C++/CLI是C++的超集(与C++一样,它是C的超集)。