如何在/使用 Visual Studio 2010 中为 64 位 Windows 构建 libcurl? [英] How do I build libcurl for 64-bit Windows in/using Visual Studio 2010?

查看:37
本文介绍了如何在/使用 Visual Studio 2010 中为 64 位 Windows 构建 libcurl?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以最初,我按照 BUILD.WINDOWS.txt 的说明进行操作,我能够通过创建一个新文件 winbuild.bat 来构建 32 位的 libcurl 和将它放在我的 curl 文件夹的根目录中:

So initially, I followed the instructions of BUILD.WINDOWS.txt and I was able to get libcurl building 32-bit by creating a new file winbuild.bat and placing it in the root directory of my curl folder:

CALL "C:Program Files (x86)Microsoft Visual Studio 10.0VCinvcvars32.bat"
CD winbuild
DEL CURL_OBJS.inc
DEL LIBCURL_OBJS.inc
DEL vc100.idb
nmake /f Makefile.vc mode=dll VC=10 ENABLE_WINSSL=yes GEN_PDB=yes MACHINE=X86
CD ..
EXIT /B 0

然后我从现有代码转到文件/新建/项目.../Visual C++/使用外部构建系统/构建命令行:winbuild.bat.我尝试使用 winbuild64.bat 在我的 x64 属性中创建一个新平台:

I then went to File / New / Project from Existing Code... / Visual C++ / Use external build system / Build command line: winbuild.bat. I tried to create a new Platform in my properties for x64, with winbuild64.bat:

CALL "C:Program Files (x86)Microsoft Visual Studio 10.0VCinx86_amd64vcvarsx86_amd64.bat"
CD winbuild
DEL CURL_OBJS.inc
DEL LIBCURL_OBJS.inc
DEL vc100.idb
nmake.exe /f Makefile.vc mode=dll VC=10 ENABLE_WINSSL=yes GEN_PDB=yes MACHINE=x64 DEBUG=no
CD ..
EXIT /B 0

但这是我对 winbuild64.bat 的输出:

But this is my output for winbuild64.bat:

Setting environment for using Microsoft Visual Studio 2010 x64 tools.

Microsoft (R) Program Maintenance Utility Version 10.00.30319.01
Copyright (C) Microsoft Corporation.  All rights reserved.

configuration name: libcurl-vc10-x64-release-dll-ipv6-sspi-winssl
Using SSL:
Using c-ares:
Using SSH2:
Using ZLIB:
Using IDN: true
Using IPv6: true
Using SSPI: true
Using WinSSL: true
CFLAGS: /I. /I ../lib /I../include /nologo /W3 /EHsc /DWIN32 /FD /c /DBUILDING_LIBCURL /I"../../deps/include" /DUSE_WIN32_IDN /DWANT_IDN_PRO
TOTYPES /DUSE_IPV6 /DUSE_WINDOWS_SSPI /DUSE_SCHANNEL /Zi /Fd"..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-liblibcurl.pdb"
LFLAGS: /nologo /machine:x64 "/LIBPATH:../../deps/lib" /incremental:no /opt:ref,icf
GenPDB: true
Debug: no
Machine: x64
        link.exe /DLL ws2_32.lib wldap32.lib advapi32.lib Normaliz.lib /out:..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-liblibcurl.dll  /IMPLIB:..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-liblibcurl.lib /nologo /machine:x64 "/LIBPATH:../../deps/lib" /incremental:no /opt:ref,icf ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/file.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/timeval.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/base64.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/hostip.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/progress.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/formdata.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/cookie.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/http.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/sendf.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/ftp.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/url.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/dict.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/if2ip.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/speedcheck.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/ldap.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/version.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/getenv.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/escape.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/mprintf.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/telnet.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/netrc.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/getinfo.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/transfer.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/strequal.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/easy.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/security.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/curl_fnmatch.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/fileinfo.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/ftplistparser.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/wildcard.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/krb5.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/memdebug.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/http_chunks.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/strtok.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/connect.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/llist.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/hash.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/multi.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/content_encoding.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/share.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/http_digest.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/md4.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/md5.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/http_negotiate.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/inet_pton.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/strtoofft.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/strerror.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/amigaos.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/hostasyn.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/hostip4.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/hostip6.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/hostsyn.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/inet_ntop.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/parsedate.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/select.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/tftp.obj ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/splay.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/strdup.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/socks.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/ssh.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/rawstr.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/curl_addrinfo.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/socks_gssapi.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/socks_sspi.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/curl_sspi.obj..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/slist.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/nonblock.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/curl_memrchr.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/imap.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/pop3.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/smtp.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/pingpong.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/rtsp.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/curl_threads.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/warnless.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/hmac.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/curl_rtmp.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/openldap.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/curl_gethostname.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/gopher.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/idn_win32.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/http_negotiate_sspi.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/http_proxy.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/non-ascii.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/asyn-ares.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/asyn-thread.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/curl_gssapi.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/curl_ntlm.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/curl_ntlm_wb.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/curl_ntlm_core.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/curl_ntlm_msgs.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/curl_sasl.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/curl_multibyte.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/hostcheck.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/conncache.obj..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/pipeline.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/dotdot.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/x509asn1.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/http2.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/curl_sasl_sspi.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/smb.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/curl_sasl_gssapi.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/curl_endian.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/curl_des.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/vtls/openssl.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/vtls/gtls.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/vtls/vtls.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/vtls/nss.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/vtls/polarssl.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/vtls/polarssl_threadlock.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/vtls/axtls.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/vtls/cyassl.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/vtls/schannel.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/vtls/darwinssl.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/vtls/gskit.obj  ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/vtls/mbedtls.obj   ..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-liblibcurl.res
..uildslibcurl-vc10-x64-release-dll-ipv6-sspi-winssl-obj-lib/file.obj : fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'x64'
NMAKE : fatal error U1077: '"C:Program Files (x86)Microsoft Visual Studio 10.0VCBINamd64link.exe"' : return code '0x458'
Stop.
NMAKE : fatal error U1077: '"C:Program Files (x86)Microsoft Visual Studio 10.0VCinamd64
make.exe"' : return code '0x2'
Stop.

我能够在命令提示符中构建 32 位,并且我尝试了 Visual Studio 命令提示符(2010)和 Visual Studio x64 Win64 命令提示符(2010),但都没有奏效.

I was able to build 32-bit in Command Prompt, and I tried both Visual Studio Command Prompt (2010) and Visual Studio x64 Win64 Command Prompt (2010), but neither worked.

我已经阅读了这个答案,似乎我可以创建一个项目,然后从 Visual Studio 内部运行 nmake2010,但我不知道如何在编译期间让它在 winbuild 目录中工作.

I've read this answer and it seems like I can create a project and then run nmake from inside Visual Studio 2010, but I can't figure out how to have it work within the winbuild directory during compilation.

我的项目中的代码已完成,我剩下要做的就是构建依赖项以获取用于部署的 dll 和 lib 文件.我一直在调试 libcurl 7.25.0 构建,哈哈,我正在尝试构建 7.47.1.感谢所有帮助.

The code in my project is finished and all I have left to do is build the dependencies to get the dll and lib files for deployment. I've been debugging off of a libcurl 7.25.0 build this whole time lol and I'm trying to build 7.47.1. All help appreciated.

推荐答案

很简单.
1:安装windows SDK,VS VC,
2:下载最新的 curl 版本
3:Win+R cmd
4:cd到[你的vs安装]VCin[amd64或x86_amd64],根据你想要的构建类型使用文件夹(我在64位机器上使用amd64,在我的64 win 8.1上使用curl dll
5:相应地运行 vcvars64 或 vcvars32
6: cd 到 [提取的 CURL 目录]winbuild
7:运行:
nmake/f makefile.vc ENABLE_WINSSL=yes mode=dll MACHINE=x64 VC=13根据您的安装使用 x64 和 VC 版本.例如VS 2013 是 13

这将需要一些时间并在 CURLuildslibcurl-vc13-x64-release-dll-ipv6-sspi-winssl 或 CURLuildslibcurl-vc13-x86-release-dll-ipv6-sspi-winsl

Its simple.
1: install windows SDK, VS with VC,
2: download latest curl release
3: Win+R cmd
4: cd to to [your vs installation]VCin[amd64 or x86_amd64], use the folder according to the type of build you want (i used amd64 on a 64bit machine to use curl dll on my 64 win 8.1
5: run vcvars64 or vcvars32 accordingly
6: cd to [extracted CURL dir]winbuild
7: run:
nmake /f makefile.vc ENABLE_WINSSL=yes mode=dll MACHINE=x64 VC=13 use x64 and VC version according to your installation. e.g. VS 2013 is 13

It will take some time and build a dll in CURLuildslibcurl-vc13-x64-release-dll-ipv6-sspi-winssl or CURLuildslibcurl-vc13-x86-release-dll-ipv6-sspi-winssl


如果cmd找不到nmake,在系统PATH变量中添加:blah blah;bleb, bleh bleh;[你的 VS 安装目录]VCin


if cmd can't find nmake, in the system PATH variable, add this: blah blah;bleb, bleh bleh;[your VS installation dir]VCin


确认指定的文件夹包含 nmake.exe.


confirm that the specified folder contains an nmake.exe.

这篇关于如何在/使用 Visual Studio 2010 中为 64 位 Windows 构建 libcurl?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆