gpt4 book ai didi

c# - 是否可以从 C# 调用具有数据集类型参数的 C++ 函数

转载 作者:行者123 更新时间:2023-11-28 07:57:44 25 4
gpt4 key购买 nike

我们有一个包含许多方法的遗留 C++ 程序(标准 C++ 未托管)。大多数使用 char 和 int 的参数。但是,其中一个具有以下方法签名:

Convert(CDataSet &DataSet, CValue &Var, char *pOutput, int &nParser)

我们需要从 C# 调用该方法。我们有一个现有的托管 C++ 类,可以毫无问题地调用需要 char 和 int 的非托管方法。但是,当需要将数据集传递给它时,我们对如何从 C# 调用 C++ 方法束手无策。有些人告诉我们这是不可能的。是真的吗?

如果我们不能传递数据集,是否可以传递一个对象,然后让托管类将其转换为数据集以传递给非托管类?

最佳答案

在您的托管 C++ 包装器库中接受 System.Data.DataSet 并将其数据转换为 CDataSet 并调用非托管代码。返回时将更新转换回来(如果需要)。

UPD:“转换”是指在您的包装器方法中创建 CDataSet 类的新实例,从托管对象填充它的数据,然后调用非托管函数。当它返回时,如有必要,将数据传输回原始托管对象并返回。

如果您需要在调用之间或跨进程边界管理对对象的更新(即即使未传递对象,其他函数调用也会导致对该对象的更新)而不是围绕非托管对象创建包装器并提供托管接口(interface)让您在所需级别操作对象。

关于c# - 是否可以从 C# 调用具有数据集类型参数的 C++ 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12326868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com