curl xp系统报“无法定位程序输入点 InitializeCriticalSectionEx 于动态链接库 Kernel32.dll”解决办法

时间:2024-03-23 17:06:47

出现这个问题主要是因为libcurl.dll不兼容xp系统,不要改变工程的编译配置项,源码默认是不支持的,现记录修改如下:

主要原因是win10+vs2013编译默认是不支持xp的,这时用depends.exe查看发现还是libcurl.dll调用这个函数,搜了一圈大多数都是libcurl在xp上使用遇到无法定位程序输入点GETTICKCOUNT64问题,个人感觉应该属于同一个问题,网上多数都是针对vs直接打开工程,修改工程文件的处理方式:
 1、VS2013项目属性 -> 常规: 将平台工具集改为 "Visual Studio 2013 - Windows XP (v120_xp)

2、命令行编译模式对应的修改,但是,那些都是在通过IDE直接修改的,在不用打开工程文件的情况下可以修改{src_curl}\winbuild\MakefileBuild.vc文件:

CFLAGS      = /I. /I ../lib /I../include /nologo /W3 /EHsc /DWIN32 /FD /c /DBUILDING_LIBCURL 
CURL_CFLAGS   =  /I../lib /I../include /nologo /W3 /EHsc /DWIN32 /FD /c 
CURL_LFLAGS   = /nologo /out:$(DIRDIST)\bin\$(PROGRAM_NAME) /subsystem:console /machine:$(MACHINE)

修改为:

CFLAGS      = /I. /I ../lib /I../include /nologo /W3 /EHsc /DWIN32 /FD /c /DBUILDING_LIBCURL /D_USING_V110_SDK71_
CURL_CFLAGS   =  /I../lib /I../include /nologo /W3 /EHsc /DWIN32 /FD /c /D_USING_V110_SDK71_
CURL_LFLAGS   = /nologo /out:$(DIRDIST)\bin\$(PROGRAM_NAME) /subsystem:console,"5.01" /machine:$(MACHINE)

注意:CFLAGS  与 CURL_CFLAGS,CURL_LFLAGS 在工程配置文件中并不是三行排列在一起的,入下图:

curl xp系统报“无法定位程序输入点 InitializeCriticalSectionEx 于动态链接库 Kernel32.dll”解决办法

curl xp系统报“无法定位程序输入点 InitializeCriticalSectionEx 于动态链接库 Kernel32.dll”解决办法

 

3、编译

打开任务栏找到Microsoft Visual Studio 2008à Visual Studio Toolà Visual Studio 2008 x64 Win64 命令提示,打开。

因为我要编译64位库,所以我打开的是“Visual Studio 2008 x64 Win64 命令提示”,如果你们是编译32位库,就打开“Visual Studio 2008 命令提示”。

进入curl-7.54.0\winbuild,将刚才组成的命令输入,按下回车,就坐等库编译成功。

curl xp系统报“无法定位程序输入点 InitializeCriticalSectionEx 于动态链接库 Kernel32.dll”解决办法

 

 

curl xp系统报“无法定位程序输入点 InitializeCriticalSectionEx 于动态链接库 Kernel32.dll”解决办法

 

参考文献:

https://blog.csdn.net/tiantiananan/article/details/88061997

http://blog.sina.com.cn/s/blog_62949ff40102x2wm.html