1

我最近在 Windows 10 上静态编译了 libzip(和 zlib),我正在 Visual Studio 2017 上使用它。我按照这个线程上的说明进行了修改,使其适应 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 时,我还使用了此处的补丁来消除错误。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;
}

链接静态库而不是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
4

0 回答 0