rust - 错误 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,但出现标题中提到的相同错误。接下来我可以尝试什么?
解决方案
推荐阅读
- flowtype - 流不相交联合检查适用于文字字符串,但不适用于常量
- swiftui - SwiftUI - 带列表的段控制
- c# - 当枚举不可为空且没有任何空选项时,检查它是否为空
- php - Laravel 错误尝试在自动加载之前使用日志
- groovy - 如何以编程方式构建 ForEach 输入?
- javascript - 在 Acrobat 中使用 JavaScript 自定义图章时如何自定义对话框字体或样式
- docker - 适用于 Windows 10 的 ubuntu 应用程序上的 Docker 启动但未运行
- java - 在 Arquillian Drone 的扩展中使用 BrowserMob 代理时,HAR 不完整
- excel - 我想将选择另存为新工作簿,但如果工作簿已经存在,我想在现有工作簿中另存为新工作表
- swift - Swift用条件替换字符串的出现