gpt4 book ai didi

c++ - 带有 Eigen 的神秘 C++/CLI 托管/非托管错误

转载 作者:行者123 更新时间:2023-11-28 07:09:27 25 4
gpt4 key购买 nike

我正在处理现有的 Visual Studio 2010 项目,我现在应该将新功能( Eigen 和点云库)添加到现有方法中(我们称之为 foo() ).我现在该项目正在以某种方式使用 C++/CLI。我不得不承认我对 C++/CLI 一无所知,只读了一点。然而,声明和定义 foo() 的类似乎是一个常规的 C++ 类,没有 ref 或任何其他 CLI 标识符。但是在 foo() 中使用了句柄 (var^)。所以我不太确定 foo() 是否是托管函数!?我可以向此函数添加相当多的常规 C++ 代码,但现在我开始使用 Eigen 和 PCL,并发现了一些神秘的错误。例如,当我声明时:

 Eigen::Matrix3f m;

一切正常。但是当我这样做时:

 Eigen::Matrix4f m;

我收到以下错误:

error C2711: 'fooclass::foo' : this functon cannot be compiled as managed, consider using #pragma unmanaged 
error C3821: 'void fooclass::foo(void)': managed type or function cannot be used in an unmanaged function

所以它适用于 3f 而不是 4f!这太奇怪了,这只是一个例子。我无法识别任何模式。在我的理解中,VS 以某种方式认为 Matrix4f 是一个托管函数。

如有任何提示,我将不胜感激!我什至不知道从哪里开始寻找。

最佳答案

我对 CLI 一无所知,但 Matrix3f 和 Matrix4f 之间的唯一显着区别是第二个是矢量化的,并且在内部要求其数据与 __declspec(align(16)).

关于c++ - 带有 Eigen 的神秘 C++/CLI 托管/非托管错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21244077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com