我正在尝试使用 cURL 库(我对库很陌生,所以我为我的无知道歉)。我使用命令:
g++ -I"C:/Curl/include" distance.cpp -o run -L"C:\Program Files\Curl\lib" -lcurl
编译我的代码。
然后我尝试运行名为 run 的 .exe 文件。执行失败,错误消息显示:“代码执行无法继续,因为找不到 libcurl-x64.dll。”我最初的想法是更改 .dll 文件的名称以匹配错误的名称。 windows-64位版本的curl中的文件称为libcurl.dll(我的系统声称它是一个“.A文件”)。我尝试使用重命名的“libcurl-x64.dll”文件运行 .exe 文件。另一个错误表明 libcurl-x64.dll 不是设计为在 Windows 上运行(事实并非如此,因为它是 Windows 64 位版本)或包含错误。除非 cURL 网站的源文件有错误,否则我看不到任何文件如何包含错误。我认为既然curl是一个流行的库,它的文件不应该被重命名。
有趣的是,我 1)将 libcurl.dll 添加到我的工作目录中,2)将名为 CURL_PATH 的系统路径添加到我的环境变量中。我不知道编译器怎么找不到这个文件。
我已按照此操作将 dll 库导入 CodeBlocks Linker 时遇到问题,但我的 lib 文件内部没有附加文件夹。
我检查了很多变量,包括我的芯片的架构。(我有使用ARM的Windows Surface 7 Snapdragon。)我最初尝试了ARM64版本,但在编译时收到“文件无法识别”错误。由于我正在阅读一些其他内容,我现在正在使用 Windows 64 位版本的curl。就像我的代码编译之前所说的那样,我认为我解决了这个问题。我还有一个 .cpp 代码的最小可重现示例,以防有帮助。
任何帮助将不胜感激。我想我还必须做一些其他事情才能链接该文件。我以为我在编译时就是这么做的,但显然不是。我用的是vscode。如果您有任何疑问,请告诉我。感谢您的宝贵时间!
我的.cpp源代码供参考:
#include <C:\Program Files\Curl\include\curl\curl.h>
int main() {
/*auto curl =*/ curl_easy_init();
}
首先,关于代码和构建的一些建议。 我建议将你的编译命令更改为
g++ -I"C:\Program Files\Curl\include" distance.cpp -o run -L"C:\Program Files\Curl\lib" -lcurl
然后,在源代码中包含 libcurl 标头,如下所示:
#include <curl.h>
正常情况下应该这样做。 IE。通常,您指定包含路径并以这种方式包含,编译器会搜索您指定的包含路径(
-I
选项)。
但这些只是建议。
问题的原因是实际的 DLL 在运行时无法执行。您需要将文件
libcurl-x64.dll
从类似 C:\Program Files\Curl\bin
的内容复制到生成的可执行文件所在的文件夹中。执行此操作后,尝试再次运行可执行文件。警告:我认为缺少更多 DLL。在 C:\Program Files\Curl\bin
中查找它们,将所有必需的 DLL 复制到可执行文件所在的同一文件夹中。