Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.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++;带有.net中stl容器的dll_C++_.net_Dll_Stl - Fatal编程技术网

C++ 调用c++;带有.net中stl容器的dll

C++ 调用c++;带有.net中stl容器的dll,c++,.net,dll,stl,C++,.net,Dll,Stl,在本机dll中具有以下功能: double sum (std::vector<double> vals) { double s = 0.0; for (size_t = 0; i < vals.size(); i++) { s += vals[i] } return s; } 双和(标准::向量VAL) { 双s=0.0; 对于(size_t=0;i

在本机dll中具有以下功能:

double sum (std::vector<double> vals)
{
    double s = 0.0;
    for (size_t = 0; i < vals.size(); i++)
    {
        s += vals[i]
    }
    return s;
}
双和(标准::向量VAL)
{
双s=0.0;
对于(size_t=0;i
如何使其可从.net(c#)调用

问题是,
向量
没有对


是否有可能更改C++侧以使调用成为可能?(不放弃任何STD C++特性,包括调用其他C++库的能力)

不可能也不应该做:

但是,您可以创建一个c函数,该函数很容易被c#调用。作为参数,您可以传递一个双精度的c数组和第二个参数—数组的长度。包装器函数可以将其转换为std::vector并调用原始函数

double sumWrapper(double* pointerToDoubleArray, unsigned int numberOfElements) {
    //convert and call sum
}
<>这个C++函数可以通过使用自定义编组来调用。另一个选项是简单包装器生成器()自动生成C包装器函数和C++函数,调用dll中的C++函数。
另一个选项是添加一个C++/Cli包装函数,该函数可以从C#调用,并将.net double数组转换为stl向量。

我如何从.net端调用它?(有一个列表作为源)@ ANDR SkOVACS,这解释了如何使用SWIG将C++与C语言进行接口。