用到zlib库的程序运行时报错:无法定位程序输入点createfile2于动态链接库KERNEL32.DLL上

这是因为createfile2至少要windows8及以上才支持,想知道原理的可参看https://msdn.microsoft.com/en-us/library/windows/desktop/hh449422(v=vs.85).aspx
不想知道的直接按下面的步骤重新编译zlib库。微笑

1.使用vs打开(我用的是2013)zlib-1.2.8\contrib\vstudio\vc11目录下的zlibvs.sln

2.在iowin32.c文件第 29行那段宏用#if _WIN32_WINNT >= _WIN32_WINNT_WIN8 和 #endif包裹,


然后右键 zlibvc-属性-配置属性-C/C++-预处理器定义中加入一行 _WIN32_WINNT=0x0601即可,编译

3.编译的时候会报:error LNK2026: 模块对于 SAFESEH 映像是不安全的。解决办法:右键 zlibvc-属性-配置属性-链接器-命令行 在后面加一行 /SAFESEH:NO 

4.之后还会报错:.\zlibvc.def(4): fatal error LNK1118: “VERSION”语句中的语法错误。解决办法,直接定位到该错误,删除VERSION那一行即可

5.直接把生成的zlibwapi.dll和zlibwapi.lib(在 x86\ZlibDllDebug目录下)拷贝到需要使用该库的工程中去~


参考博文:http://blog.csdn.net/drecik__/article/details/50342357

猜你喜欢

转载自blog.csdn.net/dominating_/article/details/52994661