我很难将Minizip的http://www.winimage.com/zLibDll/minizip.html)示例源代码编译到Windows中的控制台应用程序中。
在尝试构建minizip.c示例时,我收到以下错误:
Error 9 error LNK2019: unresolved external symbol _zipClose referenced in function _main C:\tst_create_zip\tst_create_zip\tst_create_zip.obj
Error 13 error LNK2019: unresolved external symbol _zipOpen2_64 referenced in function _main C:\tst_create_zip\tst_create_zip\tst_create_zip.obj
我在zip.h中看到函数是用extern" C"和__cdecl调用约定,所以链接器期望函数的某种c样式名称(它总是包含下划线' _'?)
zlibwapi.dll(包含zLib和Minilib)的依赖性walker显示导出的函数没有下划线,例如" zipClose"," _zipOpen2_64"。
所以问题是:如何告诉链接器在没有下划线的情况下搜索函数名称?或者我应该使用LoadLibrary()吗?
提前致谢。
答案 0 :(得分:0)
事实证明我错过了预处理程序指令
#ifdef ZLIB_WINAPI
#include <windows.h>
// No need for _export, use ZLIB.DEF instead.
// For complete Windows compatibility, use WINAPI, not __stdcall.
#define ZEXPORT WINAPI
当我定义ZLIB_WINAPI时,它有效。
一个误导我理解的事情是在函数声明之前没有__declspec(dllexport)。然而,链接器能够解析导入。