C++ 调用c++;带有.net中stl容器的dll
在本机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
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语言进行接口。