我最近在 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.lib
到libzipstatic.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