首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >LibTorch (PyTorch C++) LNK2001错误

LibTorch (PyTorch C++) LNK2001错误
EN

Stack Overflow用户
提问于 2022-11-19 16:52:11
回答 1查看 85关注 0票数 0

我正在学习LibTorch 这里的教程。

作以下修改:

  • example-app => Ceres
  • example-app.cpp => main.cxx

在CMake命令cmake --build . --config Release之前,一切都正常工作。

它产生了下列错误:

代码语言:javascript
运行
复制
main.obj : error LNK2001: unresolved external symbol __imp___tls_index_?init@?1??lazy_init_num_threads@internal@at@@YAXXZ@4_NA [D:\Silverous Black\CPE42S2-CPE42S2\CPE 406\ProjectDumagan\src\Ceres\build\Ceres.vcxproj]
main.obj : error LNK2001: unresolved external symbol __imp___tls_offset_?init@?1??lazy_init_num_threads@internal@at@@YAXXZ@4_NA [D:\Silverous Black\CPE42S2-CPE42S2\CPE 406\ProjectDumagan\src\Ceres\build\Ceres.vcxproj]
D:\Silverous Black\CPE42S2-CPE42S2\CPE 406\ProjectDumagan\src\Ceres\build\Release\Ceres.exe : fatal error LNK1120: 2 unresolved externals [D:\Silverous Black\CPE42S2-CPE42S2\CPE 406\ProjectDumagan\src\Ceres\build\Ceres.vcxproj]

我不相信这些是我所做的改变,因为问题在于链接。

我还试图将其直接复制到Visual中。我使用的是LibTorch扩展尚未兼容的Visual 17 2022 (Visual 16 2019不再可从网站安装)。

复制通过一个空白的C++模板(没有启动文件)。我设置了以下宏:

  • LibTorchTarget = CPU指定要使用CPU的lib手电筒(对其他宏有用)
  • LibTorchDir = C:/libtorch/目录,在该目录中可以找到安装(用于多个安装)
  • LibTorchInstall = $(LibTorchDir)libtorch_$(LibTorchTarget)/表示为C:/libtorch/libtorch_CPU/
  • LibTorchInclude = $(LibTorchInstall)include/表示为C:/libtorch/libtorch_CPU/include/
  • LibTorchLib = $(LibTorchInstall)lib/表示为C:/libtorch/libtorch_CPU/lib/

并将IncludeLib宏放在各自的VC++ Directories位置。以及$(LibTorchLib)*.lib (C:/libtorch/libtorch_CPU/lib/*.lib)在Linker > Input > Additional Dependencies中指定用于链接的所有.lib(防止大量LNK2009错误)。

最后,我将start xcopy /s "$(LibTorchLib)*.dll" "$(OutDir)" /Y /E /D /R命令放在Build Events > Pre-Link Event > Command Line中,以在教程中的CMakeLists.txt中复制if子句(显然是为了避免内存错误)。

结果与最终的LNK1120错误相同:

代码语言:javascript
运行
复制
Error   LNK2001 unresolved external symbol __imp___tls_index_?init@?1??lazy_init_num_threads@internal@at@@YAXXZ@4_NA    Ceres   D:\Silverous Black\CPE42S2-CPE42S2\CPE 406\ProjectDumagan\src\Ceres\main.obj    1   
Error   LNK2001 unresolved external symbol __imp___tls_offset_?init@?1??lazy_init_num_threads@internal@at@@YAXXZ@4_NA   Ceres   D:\Silverous Black\CPE42S2-CPE42S2\CPE 406\ProjectDumagan\src\Ceres\main.obj    1   
Error   LNK1120 2 unresolved externals  Ceres   D:\Silverous Black\CPE42S2-CPE42S2\CPE 406\ProjectDumagan\out\Debug_64\Ceres\Ceres.exe  1   

我不太明白LNK错误的原因,所以如果有人能帮忙的话,那就太好了。提前谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-19 17:09:57

查看:更新到VisualStudio17.4.0会产生与TLS相关的链接器错误

您很可能需要在MSVC更新后重新构建PyTorch。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74501884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档