如何在虚幻引擎中使用第三方库Eigen?

问题描述 投票:0回答:2

我正在开发 UE4 插件,并且想要使用 Eigen 库。看来UE4已经集成了这个库,你可以在Engine>Source>ThirdParty>Eigen中看到。

我查看了其他插件,例如 AlembicImporter,以获取指导。为了使用 Eigen,我看到他们在 build.cs 文件中添加了

"Eigen"
,并在使用 Eigen 的源文件中写入
#include <Eigen/...>
,其中
...
可以是 Dense、SVD、Sparse 等。

我尝试过这个,但是当我构建我的项目时,我收到错误

fatal error: 'Eigen/Dense' file not found

(同样,我尝试使用的任何

Eigen/...
都会出现错误)

c++ eigen unreal-engine4
2个回答
4
投票

看起来预构建的 UE4 不包含“编译的”Eigen 标头(“Dense”、“Sparse”等),尽管它确实包含 Eigen“src”文件夹。

如果您从源代码编译引擎,则应该在 ThirdParty 文件夹中安装完整的 Eigen。然后您可以像各种引擎插件一样使用它。但是从源代码编译 Unreal 有点麻烦,并且需要大量的硬盘空间。这也会阻止您以源代码形式分发插件,因为普通用户无法使用 Eigen。

在您的插件中包含 Eigen 的本地副本可能是最简单的 - 它只是标头,因此您可以将其包含在 build.cs 中的私有包含路径中。


0
投票

我找到了解决方案。我们不需要下载 Eigen 库来包含在插件中;我们可以简单地使用虚幻引擎内置的UE5.4版本。当您使用下载的 Eigen 库时,它可以在编辑器中运行,但打包项目并打开后,在调用与 Eigen 相关的函数时,项目会崩溃。我认为这是由于虚幻引擎的内存分配与 Eigen 库的内存分配不同造成的。 在

YourPlugin.Build.cs

// Use Unreal Engine built-in Eigen as a third-party dependency
AddEngineThirdPartyPrivateStaticDependencies(Target, "Eigen");

如果在项目打包过程中遇到与无法访问代码相关的错误,可以抑制该错误并继续编译。

也在

YourPlugin.Build.cs

// Suppress compiler warning C4702 for unreachable code
PublicDefinitions.Add("EIGEN_IGNORE_UNREACHABLE_CODE_WARNING=1");

要抑制本地代码中的警告:

#pragma warning(push)
#pragma warning(disable : 4702) // Disable unreachable code warning

#include "Eigen/Dense"

#pragma warning(pop)

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.