首页 > 解决方案 > 错误 LNK2019:函数“enum nfdresult_t __cdecl SetDefaultPath”中引用的未解析外部符号 __imp_SHCreateItemFromParsingName

问题描述

我在 Windows 10 机器上构建Pathfinder 3的演示时遇到问题。

我知道其他人已经能够在 Windows 10 上运行演示,所以这是可能的。但是,我遇到了一个难以解决的问题。

我克隆了 repo,并注释掉了对jemalloc(不针对 Win10)的单一引用。

为了设置 SDL2,我按照Rust SDL2 自述文件的标题Windows (MSVC)下的说明进行操作。

要运行演示,我在切换到demo/native目录后通过 powershell 使用以下命令:

$env:RUSTFLAGS += "-C target-cpu=native"

cargo run --release

如果我在 下没有 SDL2 lib 文件.multirust/toolchains/stable-x86_64-pc-windows-msvc/lib/rustlib/x86_64-pc-windows-msvc,则会收到一条错误消息,抱怨找不到 *.lib 文件:

致命错误 LNK1181:无法打开输入文件“SDL2.lib”

将 *.lib 文件放入该文件夹可解决此问题。

如果我将 SDL2.dll 文件放在主路径查找器文件夹中,则会收到错误消息:

错误 LNK2019:函数“enum nfdresult_t __cdecl SetDefaultPath(struct IFileDialog *,char const *)”中引用的未解析外部符号 __imp_SHCreateItemFromParsingName

如果我将 SDL2.dll 放在demo/native文件夹中,我会得到与上面相同的错误。

我曾尝试使用 VS2015 和 VS2017 的开发人员命令提示符,但没有运气。特别是,当尝试使用这些提示进行构建时,我无法使用RUSTFLAGS建议的,所以我省略了它们。

我也尝试使用 git bash,但出现标题中提到的相同错误。接下来我可以尝试什么?

标签: rustsdl-2msvcrt

解决方案


推荐阅读