通过传递句柄减速器将 C++ 包装为 C#
c++ wrapping to c# by passing handle decelrator
我在 c++ 中有一个这样的函数,里面还有另一个函数,如下所示:
Doom(int n, const array<double> ^x, int incx, int k, double r){
pin_ptr<double> xptr = &(x[0]);
fdoom(n, xptr, incx, &k, &r, &fail);
}
现在,当我从 C# 调用此函数时:
int k = 0;
double r = 0.0;
CPPCode.Doom(n, x, incx, k, r);
在这里,我的值 k 和 r 应该更改为 1 和 -2,但这不会发生。所以我必须使用引用才能发生这种情况但我对如何将 CLR 引用用于单个值感到完全困惑。
请注意,函数 fdoom 在其类中是这样定义的:
void fdoom (Integer n, const double x[], Integer incx,
Integer *k, double *r, NagError *fail)
在托管C++中,如果要通过引用从 C# 调用它,则应使用 %
。那是你的函数看起来像这样:
Doom(int n, const array<double> ^x, int incx, int %k, double r){
pin_ptr<double> xptr = &(x[0]);
pin_ptr<int> kptr = &k;
fdoom(n, xptr, incx, kptr, &r, &fail);
}
在 C# 函数中,您应该使用 ref
关键字通过引用来调用它。那是:
CPPCode.Doom(n, x, incx, ref k, r);
相关文章:
- 如何在c++17中制作一个模板包装器/装饰器
- std::vector的包装器,使数组的结构看起来像结构的数组
- 如何在c++迭代器类型中包装std::chrono
- 是否可以用"iostream"包装现有的TCP/OOpenSSL会话
- 用pybind11包装C++抽象类时出错
- 为左值和右值的包装器实现C++范围
- C结构,其指针将被包装在unique_ptr中
- 如何包装第三方DLL在R中使用
- 在类型和包装器之间reinterpret_cast是否安全<Type>?
- 将 N-arg 函数包装到另一个函数中
- 元组由 Swig 生成的 Python 包装器返回,用于C++向量
- 包装一个对象并假装它是一个 int
- 使用 Python Extension API 包装复杂C++类
- 外壳包装器句柄/执行交互式命令管道C++ UNIX
- 包装C++类时不完整的类型 GLFWwindow
- 将函数包装器转换为 std::function
- C++函数包装器来捕获某些信号
- 创建包装升压适配器的自定义范围类
- 如何包装(撰写)增强 hana 地图并访问括号运算符(运算符 [])?
- 使用运算符*重载包装矩阵乘法