从UE4链接到第三方库时未解析的外部符号

Unresolved external symbol when linking to third party libraries from UE4

本文关键字:外部 符号 链接 UE4 第三方      更新时间:2023-10-16

>编辑:更新了帖子,以避免链接到第三方网站并在此处收集所有必需的信息。

任何信息不胜感激。如果您需要更多信息,请通知我,我将使用新的详细信息编辑帖子。以下是一些有用的信息。

错误。

源代码。

我正在尝试使用由一个库文件和本质上一个头文件组成的第三方 SDK。我设法让智能感知工作,但即使我修改了项目的构建.cs文件以添加库路径,我也会收到链接器错误。

public OculusTest(TargetInfo Target)
    {
        PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" });
        // Add static libs
        PublicAdditionalLibraries.Add(Path.Combine(ThirdPartyPath, "RPLidar/Libraries", "rplidar_driver.lib"));
        // Add a path with the .h that has the function definitions
        PublicIncludePaths.Add(Path.Combine(ThirdPartyPath, "RPLidar", "Includes"));
    }

我还检查了我是否遗漏了某些内容,但是在独立的C++项目中,我使用相同的文件,并且只使用相同的文件,并且它确实有效。有问题的文件是

RPLidar.h 和 rplidar_driver.lib

因此,我认为错误在于我未能告诉虚幻编译器在哪里可以找到库文件。

提前感谢您提供有关这种方式太顽固错误的所有信息。

我终于发现了我的错误。

在检查了

相同版本的VSC++用于编译两个程序并且我检查了它是否处于正确的配置中之后,我更改了一件额外的事情,使这一切得以解决。

我没有编译为多线程 LIB 文件,而是将代码编译为 DLL 文件。我通过打开 LIB 项目属性并转到 C/C++ -> 代码生成 -> 运行时库并将其设置为多线程 DLL (/MD) 来做到这一点。在"常规"下,我将配置类型设置为静态库 (.lib)。