LNK2019未解析的外部符号

时间:2018-04-06 14:21:36

标签: c++ c visual-studio-2015 linker-errors

我正在尝试在MS visual studio 2015中构建AV1编解码器源代码。 当我编译aomdec.lib时,它正在被正确编译,但当我把它变成可执行文件时,我得到一些链接器错误到属于标准库的函数(如stdio.h等)。

错误如下:

severity    Code Description    Project File    Line    Suppression State
Error   LNK2019 unresolved external symbol __imp__fseek referenced in function _file_is_obu aomdec <filename>


Severity    Code    Description Project File    Line    Suppression State
Error   LNK2019 unresolved external symbol __imp__getenv referenced in function _TestEnv    aomdec <filename>

以同样的方式出现更多错误。

有人能说出配置有什么问题。

1 个答案:

答案 0 :(得分:0)

This link可能有所帮助。如您所见,错误有几个原因。您的情况可能会发生什么(因为这是一个您只是根据您没有编写的代码构建的库),您可能没有为静态构建选择正确的选项。正确的静态构建选项应包括库中的函数定义(静态库)。当您构建为DLL时,定义位于DLL文件而不是静态文件中(即使在构建为DLL时生成.lib文件,您会注意到.lib文件的大小小于它时的.lib文件。 ; sa静态建造)。请注意,我指的是在构建您希望客户端使用的库时,而不是在构建实际客户端时。

在构建将使用上面构建的库的客户端时,如果您执行从客户端可执行文件到将库构建为DLL(上面)时生成的.lib文件的静态链接,您将收到链接错误,但是,如果您将客户端可执行文件链接到与DLL相同的.lib,那么它应该没问题,前提是当您运行客户端可执行文件时,还包括与.lib一起生成的DLL。