c++ - 让 cURL 在 64 位机器上与 Visual Studios 2017 32 位一起工作
问题描述
运行 Windows 7 64 位(英特尔 i5 64 位)。
我记得为 32 位设置了 Visual Studio 2017 社区。
(我认为这会给我的应用程序向后兼容性并且还可以在 64 位机器上运行,这可能是一个错误的假设?)。
无论如何,要确认,高级链接器设置针对 x86... 以及针对 32 位 x86 的构建配置。
我的应用程序(带有 Boost 的 C++)一直在编译并运行良好。
现在我正在尝试添加 cURL 但看起来不太好。
尝试将 cURL 编译为 32 位的步骤:
- c:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build>vcvarsall.bat x86
- nmake /f Makefile.vc 模式=静态 MACHINE=x86
(也尝试将静态 C CRT 与 RTLIBCFG=static 链接,没有区别)
附加包含目录:添加到 /include 目录的路径
预处理器定义:添加了 CURL_STATICLIB
- 附加库目录:添加到 /lib 的路径
- 附加依赖项:添加了 libcurl_a.lib
此示例中的 cURL 函数链接:
CURL *curl = curl_easy_init();
if (curl) printf("curl_easy_init() succeeded!\n");
else fprintf(stderr, "Error calling curl_easy_init().\n");
return 0;
但在编译的最后”
fatal error LNK1112: module machine type 'x86' conflicts with target machine type 'x64'
VCTargets\Microsoft.CppCommon.targets(720,5): error MSB6006: "link.exe" exited with code 1112.
更新:链接器高级设置在尝试以下链接后未设置回 x86,真正的错误是:
fatal error LNK1120: 60 unresolved externals
它们看起来都像这样,但对于引用的每个目标文件:
libcurl_a.lib(easy.obj):错误 LNK2019
(仅供参考 - 我确实尝试了这些并构建 cURL,就好像我的目标是 x64,但函数(在示例代码中)在链接期间无法解析。)
解决方案
推荐阅读
- c - 如何在 C 中写入文件和打印之间切换
- php - 如何从邮递员数组返回数组,如 [1,2,3]?
- python-3.x - 在 Python 3 中取消转义双反斜杠序列
- google-apps-script - 谷歌脚本不发送消息
- php - Laravel 8 我的播种数据有问题播种:调用未定义的方法 ::factory()
- signals - Kibana/Vega 中的地图和信号纬度、经度和缩放
- multithreading - Docker 与线程同时创建网络
- javascript - puppeteer 点击打开新标签并抓取所有图像
- r - 上面带有不变行的进度条(在 R 中)
- c - 在 Xcode Objective-C 项目中为 C 文件指定 Makefile