cmake 构建GTSAM样本时,链接器找不到__imp_clock和__imp_time64

68bkxrlz  于 2023-03-23  发布在  其他
关注(0)|答案(1)|浏览(250)

我在Windows中构建了GTSAM,现在我正在尝试用它构建一个示例应用程序。
示例应用程序非常简单(它是GTSAM的一部分),但当我运行它时,我得到了以下链接器错误:

Severity    Code    Description                                                                 Project  File   Line    Suppression State
Error       LNK2019 unresolved external symbol __imp_clock referenced in function gk_CPUSeconds example  D:\MyData\SourceCode\gtsam_win\cmake\example_cmake_find_gtsam\build\metis-gtsamDebug.lib(timers.obj)

以及

Severity    Code    Description                                                             Project     File                                                                                                    Line    Suppression State
Error       LNK2019 unresolved external symbol __imp__time64 referenced in function time    example     D:\MyData\SourceCode\gtsam_win\cmake\example_cmake_find_gtsam\build\metis-gtsamDebug.lib(timers.obj)    1

搜索显示这两个函数是MSVC库的一部分,它们应该链接到系统。
如何解决此问题?
看起来问题是在库构建和应用程序构建期间的设置不匹配,但我找不到任何链接器设置不同。在哪里寻找任何这样的差异?

8zzbczxx

8zzbczxx1#

来自链接库的未解析外部运行时库符号中的__imp_前缀表示该库是使用DLL运行时构建的(C++ -> Code Generation -> Runtime Library中的/MD)。
如果你用静态运行时(/MT)构建应用程序,DLL运行时的符号将无法解析。所有编译单元的运行时设置应该相同。

相关问题