Rust 错误LNK2019:未解析的外部符号“uuu imp”SHCreateItemFromParsingName在函数中引用”;枚举nfdresult“u t”cdecl SetDefaultPath“;
在我的Windows 10计算机上构建的演示出现问题 我知道其他人已经能够在Windows10上运行演示,所以这是可能的。然而,我遇到了一个很难解决的问题 我克隆了repo,并注释掉了对Rust 错误LNK2019:未解析的外部符号“uuu imp”SHCreateItemFromParsingName在函数中引用”;枚举nfdresult“u t”cdecl SetDefaultPath“;,rust,sdl-2,msvcrt,Rust,Sdl 2,Msvcrt,在我的Windows 10计算机上构建的演示出现问题 我知道其他人已经能够在Windows10上运行演示,所以这是可能的。然而,我遇到了一个很难解决的问题 我克隆了repo,并注释掉了对jemalloc(不针对Win10)的单个引用 为了设置SDL2,我遵循了Rust SDL2自述文件标题下的说明 要运行演示,在切换到demo/native目录后,我通过powershell使用以下命令: $env:RUSTFLAGS+=“-C目标cpu=native” cargo run——发布 如果我没有.m
jemalloc
(不针对Win10)的单个引用
为了设置SDL2,我遵循了Rust SDL2自述文件标题下的说明
要运行演示,在切换到demo/native
目录后,我通过powershell使用以下命令:
$env:RUSTFLAGS+=“-C目标cpu=native”
cargo run——发布
如果我没有.multirust/toolschains/stable-x86_64-pc-windows-msvc/lib/rustlib/x86_64-pc-windows-msvc下的SDL2 lib文件,那么我会收到一个错误,抱怨找不到*.lib文件:
致命错误LNK1181:无法打开输入文件“SDL2.lib”
将*.lib文件放入该文件夹可修复此问题
如果我将SDL2.dll文件放在主pathfinder文件夹中,则会出现以下错误:
错误LNK2019:函数“enum nfdresult\u t\uu cdecl SetDefaultPath(struct IFileDialog*,char const*)中引用了未解析的外部符号\uuu imp\u SHCreateItemFromParsingName”
如果我把SDL2.dll放在demo/native
文件夹中,我会得到与上面相同的错误
我尝试过使用VS2015和VS2017的开发者命令提示,但没有成功。特别是,当尝试使用这些提示进行构建时,我无法使用建议的RUSTFLAGS
,因此我省略了它们
我也尝试过使用GitBash,但出现了标题中提到的相同错误。下一步我可以试试什么?可能是@KenWhite的副本谢谢链接。我看了一遍,我认为这个答案是相关的:---但是,我仍然要尝试应用它的修复,所以让我试试看它是否有效。仅供参考,这个问题与SDL2.dll无关。问题出在缺少的.lib文件中。DLL是在运行时使用的,在编译/链接时不会导致LNK错误。@KenWhite根据答案的建议,我查找了导致问题的函数,MSDN中没有前缀
\uu imp\
。但是,正如答案所示,doc页面没有提及任何可能缺失的库?您可以在函数的MSDN文档中找到库信息。它位于Shell32.dll中,这意味着您需要Shell32的导入库。感谢链接,可能存在@KenWhite的副本。我看了一遍,我认为这个答案是相关的:---但是,我仍然要尝试应用它的修复,所以让我试试看它是否有效。仅供参考,这个问题与SDL2.dll无关。问题出在缺少的.lib文件中。DLL是在运行时使用的,在编译/链接时不会导致LNK错误。@KenWhite根据答案的建议,我查找了导致问题的函数,MSDN中没有前缀\uu imp\
。但是,正如答案所示,doc页面没有提及任何可能缺失的库?您可以在函数的MSDN文档中找到库信息。它位于Shell32.dll中,这意味着您需要Shell32的导入库。