未解析的外部符号__imp__zip_open with libzip(LNK2001)

时间:2017-11-04 10:12:11

标签: c++ cmake visual-studio-2017 zlib libzip

我最近在Windows 10上静态编译了libzip(和zlib),并且我在Visual Studio 2017上玩它。我按照this thread上的说明进行了调整,使用VS2017进行了一些修改,并进行了修改CMakelists.txt静态构建库:

我将此添加到文件的末尾:

ADD_LIBRARY(zipstatic STATIC ${LIBZIP_SOURCES} ${LIBZIP_EXTRA_FILES} ${LIBZIP_OPSYS_FILES})
SET_TARGET_PROPERTIES(zipstatic PROPERTIES VERSION 3.0 SOVERSION 3 )
TARGET_LINK_LIBRARIES(zipstatic ${ZLIB_LIBRARY} ${OPTIONAL_LIBRARY})
INSTALL(TARGETS zipstatic
  RUNTIME DESTINATION bin
  ARCHIVE DESTINATION lib
  LIBRARY DESTINATION lib)

在编译libzip时,我还使用here中的补丁来消除STDIN_FILENO错误。

构建过程很顺利,我将zlibstatic.liblibzipstatic.lib添加到我的链接器选项,并将运行时库设置为/MT

我写了这个小代码,看看是否所有东西都在工作:

#include "stdafx.h"
#include <zip.h>
#include <zlib.h>




int main()
{
    zip *archive = zip_open("C:\\test.zip", ZIP_CREATE, 0);

    return 0;
}

当链接静态lib而不是DLL时,经常出现这种错误,但是我静态编译了libzip(我需要使用静态链接),所以我该怎么办?

编辑:zipstatic.lib摘要:

      C8 .data
      60 .debug$F
    45C4 .debug$S
    21BD .drectve
    2690 .rdata
   113C1 .text$mn

和zlibstatic.lib的摘要:

    50 .debug$F
    860 .debug$S
    2C1 .drectve
    4317 .rdata
    ADB6 .text$mn

0 个答案:

没有答案