Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将对象列表从c#传递到较差的c++;win32本机dll?_C#_C++_.net_Visual C++ - Fatal编程技术网

将对象列表从c#传递到较差的c++;win32本机dll?

将对象列表从c#传递到较差的c++;win32本机dll?,c#,c++,.net,visual-c++,C#,C++,.net,Visual C++,我需要从.NET中创建一个列表(数组),它由大约50个000个元素组成,将它传递给C++ DLL,对它进行操作,并从C++到.NET。 我想到的第一个选择是在两侧创建一个结构。将结构数组从.NET返回到C++。 以下是我关注的问题: a) 如果在结构中,它由非引用类型组成,如:int、double等 结构数组及其值是否将存储在堆栈上 创建结构数组时是否有限制?效率高吗 在.net端初始化如此大的数组是一种有效的方法吗 您是否有任何示例显示如何传递对对象的引用等? 没有COM、互操作性等 一般而言

我需要从.NET中创建一个列表(数组),它由大约50个000个元素组成,将它传递给C++ DLL,对它进行操作,并从C++到.NET。
  • 我想到的第一个选择是在两侧创建一个结构。将结构数组从.NET返回到C++。 以下是我关注的问题:

    a) 如果在结构中,它由非引用类型组成,如:int、double等 结构数组及其值是否将存储在堆栈上

    创建结构数组时是否有限制?效率高吗

    在.net端初始化如此大的数组是一种有效的方法吗

  • 您是否有任何示例显示如何传递对对象的引用等? 没有COM、互操作性等
  • 一般而言,我寻求如何有效执行以下事项的建议:

    1) 从数据库获取数据 2)将其分配给一个结构,我可以有效地传递给一个DLL C++ Win32库 3)在C++侧执行操作,然后返回一个数组返回.NET

    我还需要一个建议,对象应该在哪一边分配/释放 在执行上述操作方面

    提前谢谢你的帮助


    另外,我也不明白在一个类中公开一个数组,每次我访问它都会复制一个完整的副本。。。有人能向我解释一下吗?

    < P>我认为这样做的方法最简单,就是把缓冲区传递给C++ DLL,同时也表示一个长度项目,表示项目的数量。这样,客户机负责创建缓冲区,而不是DLL。DLL不再负责创建或删除缓冲区,只负责处理缓冲区

    这是大多数(如果不是所有的话)Windows API函数实现这一点的方式。大多数API函数都处理字符缓冲区,但同样的原理也适用

    <结构>,这里有一个链接,描述如何定义C++结构与C++(或C)结构兼容:


    我觉得你想得太多了。最简单、最有效的方法是通过C++缓冲区和项目的数量,并让C++在那个缓冲区工作。如果你想要样本,Windows API有很多函数需要用户传递缓冲区和长度。你有没有例子可以说明我如何在C语言的边上准备结构数组的缓冲区?我确信有很多例子说明如何创建一个与C和C++兼容的结构。只需创建一个数组,并将其传递到C++ DLL,以及数组中的项目数,基本上与发送int或双子数组没有什么不同。看这里:你帮了大忙。你可以回答那个问题,这样我就可以记下答案了。不要说C++ Win32是很差的):没有它,NETFramework就不能工作了。