c++ - 无法打开 curl/libcurl_a_debug.lib
问题描述
在我当前的项目中,我使用的是libcurl
以前由 powershell 安装的库。我正在使用#include "curl/curl.h"
和编译作品,但我有一个链接错误,上面写着:
:LNK1104:cannot open file curl/libcurl_a_debug.lib
我没有这个文件。在我当前的目录中,我发现只有libcurl.lib
. Additional library directories
我已经在and中添加了目录的路径Additional include directories
。我想知道有没有其他方法可以解决这个错误。在发布模式下,我遇到链接器无法打开文件的错误libcurl_a.lib
。另一方面,在调试文件夹中,我有一个libcurl-d.lib
文件。
解决方案
根据 Microsoft Docs,此问题有几个常见原因:
- 库文件的路径可能不正确,或者没有用双引号括起来。或者,您可能没有将其指定给链接器。
- 您可能已经安装了 32 位版本的库,但您正在构建 64 位版本,或者相反。
- 该库可能依赖于其他未安装的库。
顺便说一句,你能补充一下libcurl.lib
吗Properties->Linker->Additional Dependencies
?如果没有,您可以添加它。
您可以尝试使用编译语句而不是设置。
#ifdef _DEBUG
#pragma comment(lib,"..\\debug\\lib name")
#else
#pragma comment(lib,"..\\release\\lib name")
#endif
另外,我阅读了curl的官方文档。有Windows链接错误的描述:
5.7 在 Windows 上构建 libcurl 时出现链接错误!
您需要确保您的项目及其链接的所有库(静态和动态)都针对同一个运行时库进行编译/链接。
这是由命令行编译器的 /MD、/ML、/MT(及其对应的 /M?d)选项确定的。/MD(链接到 MSVCRT dll)似乎是最常用的选项。
构建使用静态 libcurl 库的应用程序时,必须将 -DCURL_STATICLIB 添加到 CFLAGS。否则链接器将寻找动态导入符号。如果您使用的是 Visual Studio,则需要在“预处理器定义”部分添加 CURL_STATICLIB。
如果您收到诸如“未知符号__imp__curl_easy_init ...”之类的链接器错误,则您链接到了错误的(静态)库。如果要使用 libcurl.dll 并导入 lib,则不需要任何额外的 CFLAGS,但使用下面的导入库之一。这些是由各种 lib/Makefile.* 文件生成的库:
Target: static lib. import lib for libcurl*.dll.
-----------------------------------------------------------
MingW: libcurl.a libcurldll.a
MSVC (release): libcurl.lib libcurl_imp.lib
MSVC (debug): libcurld.lib libcurld_imp.lib
Borland: libcurl.lib libcurl_imp.lib
我建议你可以试试这个方法。
推荐阅读
- php - 有没有办法转换文本框值并分配给 php 变量?
- iis - S3 图像 url 不适用于水晶报告 2008
- javascript - 从键/值对创建复杂对象
- python - 如何比较现在时间和选择时间
- r - 将日期转换为月份和年份月份的虚拟日期
- routing - 如何将流量从我的 VM 上的 IP 路由到 Kubernetes 的 NodePort?
- javascript - 使用 AJAX 和 JQUERY 和 Rails 的错误评论位置
- xamarin.forms - 无法使用正确的设置访问 AzureAD 中的公司租户
- vue.js - 如何在 Vuetify 应用程序中使用大纲图标?
- c# - 无法在视图上添加“at sign”