从C++dll访问C#中的一行主要参数
Access to a row-major parameters in C# from C++ dll
我试图将坐标系参数从C++dll访问到我的C#项目中。C++中的函数声明如下:
unsigned int GetUCS(IUnknown* document, unsigned int id, double (&frame)[16]);
我需要关于帧参数的帮助,这是一个主要的行:
[Right_x, Up_x, Forward_x, Translation_x]
[Right_y, Up_y, Forward_y, Translation_y]
[Right_z, Up_z, Forward_z, Translation_z]
[0, 0, 0, 1 ]
在我的C#项目中,我必须有这样的东西:
[DllImport("my.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode)]
private static extern uint GetUCS([MarshalAs(UnmanagedType.IUnknown)] object document, uint id, double(frame)?));
接收帧并在此基础上进行一些3D转换。谢谢!
我想我应该使用这样的C#多维数组:
[DllImport("my.dll", CallingConvention = CallingConvention.Cdecl)]
private static extern uint GetUCS(
[MarshalAs(UnmanagedType.IUnknown)] object document,
uint id,
[In, Out] double[,] frame
);
您可以在C#代码中这样分配数组:
double[,] frame = new double[4, 4];
您可以同样使用分配为new double[16]
的double[] frame
,这将与C++代码完全匹配,但您将失去在C#代码中自然访问矩阵的能力。
相关文章:
- 如何反转整数参数包
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 如何使用默认参数等选择模板专业化
- 模板参数替换失败,并且未完成隐式转换
- 具有默认模板参数的多态类的模板推导失败
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 函数调用中参数的顺序重要吗
- 部分定义/别名模板模板参数
- 模板-模板参数推导:三个不同的编译器三种不同的行为
- 使用不带参数的函数访问结构元素
- 用c++从输入文件中读取另一行
- 从C++dll访问C#中的一行主要参数
- uncrustify:如何将多行 C 函数调用的参数组合到一行上?
- 在一行中将默认类型值上的指针作为参数传递
- 从带有 getline() 的文件读入一行上有多个信息得到无效参数错误
- 将文件的每一行作为命令行参数传递给二进制文件
- C++将字符串组合在一行中作为参数
- 在一行中定义具有相同返回类型和参数类型的多个私有函数
- clang格式:如何防止所有函数参数出现在下一行