libcurl - 找不到过程入口点 CreateFile2

Posted

技术标签:

【中文标题】libcurl - 找不到过程入口点 CreateFile2【英文标题】:libcurl - The procedure entrypoint CreateFile2 could not be located 【发布时间】:2014-07-29 14:40:03 【问题描述】:

我有一个 Visual Studio 2012 C++ 项目。我通过右键单击我的项目并选择管理 NuGet 包来安装 libcurl。

我正在尝试运行以下简单程序:

#include <stdio.h>
#include <curl\curl.h>

int main(void)

    CURL *curl;
    CURLcode res;

    curl_global_init(CURL_GLOBAL_DEFAULT);

    curl = curl_easy_init();
    if(curl)
    
        //I will do something
    

  return 0;

当我运行它时,我收到以下错误:

这个解决方案:Calling any cURL function results in "entry point not found" when executing the program 向我指出了这个解决方案:Using the Windows 8 SDK to compile for Windows 7,它告诉我将我的 平台工具集Visual Studio 2012 (v110) 更改为 Visual Studio 2012 - Windows XP (v110_xp)

但我仍然遇到同样的错误。

有人知道怎么解决吗?

【问题讨论】:

【参考方案1】:

使用默认的“v110”/“v120”工具集通过 Visual Studio 2012/2013 构建时,您使用的是 Windows 8.x SDK。要支持 Windows 7,您只需设置 Preprocessor Define _WIN32_WINNT=0x0601 来表示支持 Windows 7 或更高版本,而不是默认的 0x0602 或 0x0603 表示支持 Windows 8 或更高版本。

见MSDN

如果您更改为“v110_xp”/“v120_xp”工具包,那么您使用的是 Windows 7.1A SDK,因为 Windows 8.x SDK 不支持 Windows XP。如果您想要 Windows XP 支持,您应该在此处将 _WIN32_WINNT 设置为 0x0501。一般来说,您不需要使用“v110_xp”/“v120_xp”工具集来定位 Windows 7。

这里更基本的问题是您可能根本没有构建 cURL 代码,因为您使用的是 NuGet。

首先尝试设置 _WIN32_WINNT 设置以查看 NuGet 包是否构建为支持低级 Win32 桌面应用程序。否则,发布 NuGet 时使用的 .libs 仅为 Windows 8.x 兼容性而构建——顺便说一句,在 Windows Store 应用程序而不是 Win32 桌面应用程序中使用它是必需的。也可以尝试从原项目网站http://curl.haxx.se/直接获取库自己构建

【讨论】:

以上是关于libcurl - 找不到过程入口点 CreateFile2的主要内容,如果未能解决你的问题,请参考以下文章

找不到过程入口点 __gxx_personality_v0

找不到 DllRegisterServer 入口点

模块qtcore.dll已经加载,但找不到入口点怎么解决

找不到 DLL 入口点

Azure Functions 突然找不到入口点错误

找不到名为“interlockedexchange”的入口点