【发布时间】:2018-07-26 05:40:17
【问题描述】:
我正在使用非托管 C++ 中的 API 为 Solidworks 编写一个独立的应用程序,但遇到了一些问题。 在图纸上获取注解位置坐标的方法有 IGetPosition 和 GetPosition。两者都声明具有 3 个元素的数组作为 RetVals。但 Visual Studio 不接受我将双精度数组传递给 IGetPosition。
同时,API 帮助中有 C# 和 C++/CLI 中的定义示例:
System.double IGetPosition();
System.doubleSW API IGetPosition 正如我所知道的,System.double 不仅仅是一个双精度数,而是托管 C++ 中的一个结构。我对这些东西不熟悉,因为我只是一个初学者。 所以问题是:如何在非托管代码中表示 System.double 以被接受为 IGetPosition ¶meter?
顺便说一句:GetPosition 方法采用 VARIANT,但返回 rank1 的安全数组,这似乎与 XYZ 的 3 个值不兼容。 还发现了一些关于编组的东西。那是正确的方法吗?如果是这样,你能提供一个例子吗?
【问题讨论】:
-
什么是非托管C++?请clarify。标准 C++ 中有一个类型
double。 -
在C#中有
double和System.Double没有System.double。 -
未指定时,C++ 是非托管 C++,编译为机器码。在非托管 C++ 中,您必须手动管理内存分配。 ©stackoverflow.com/questions/114238/…
-
@keith 我不使用 C#,System.double 是我在 SW API 帮助中写的。我已经用网址和屏幕截图更新了帖子。
-
@Sergey Kolesnik,该文档可能是错误的。它可能意味着
double,它是一个值类型。System.Double不是值类型,它是struct。System.double是错误的:docs.microsoft.com/en-us/dotnet/csharp/language-reference/…。正如@Ron 所说,使用 C++double.
标签: c++ c++-cli unmanaged managed