libCurl x64生成问题Visual Studio 2013(x64)Visual Studio和CMake

johnco3

我正在尝试在Windows 8.1 x64上构建libCurl x64,并且出现链接器错误。我需要能够执行此操作,因为我需要创建该库的64位调试版本,以便可以跟踪遇到的一些与FTP相关的奇怪协议问题。

基本误差输出(为简洁起见)如下

1> ------构建开始:项目:ZERO_CHECK,配置:调试x64

...

2> C:\ Users \ jcoffey \ main \ extlibs \ curl-7.35.0 \ lib \ smtp.c(2174):警告C4267:'+ =':从'size_t'转换为'long',可能丢失数据2> pingpong.c 2> rtsp.c 2> curl_threads.c 2> warnless.c 2> hmac.c 2> curl_rtmp.c 2> openldap.c 2> curl_gethostname.c 2> gopher.c 2>生成代码。 .. 2>编译... 2> idn_win32.c 2> http_negotiate_sspi.c 2> http_proxy.c 2> non-ascii.c 2> asyn-ares.c 2> asyn-thread.c 2> curl_gssapi.c 2 > curl_ntlm.c 2> curl_ntlm_wb.c 2> curl_ntlm_core.c 2> curl_ntlm_msgs.c 2> curl_sasl.c 2> curl_multibyte.c 2> hostcheck.c 2> bundles.c 2> conncache.c 2> pipeline.c 2 > dotdot.c 2> x509asn1.c 2> http2.c 2>生成代码... 2>编译... 2> openssl.c 2> gtls.c 2> vtls.c 2> nss.c 2> qssl 。c 2> polarssl.c 2> polarssl_threadlock.c 2> axtls.c 2> cyassl.c 2> curl_schannel.c 2> curl_darwinssl.c 2> gskit.c 2>正在生成代码...

...

2> x64 \ Debug \ file.obj:致命错误LNK1112:模块计算机类型'x64'与目标计算机类型'X86'冲突3> ------构建开始:项目:curl,配置:调试x64 --- --- 3>构建自定义规则C:/Users/jcoffey/main/extlibs/curl-7.35.0/src/CMakeLists.txt

请帮忙-我在论坛和stackoverflow上搜索了类似内容,但无济于事。我能够在x86(win32)模式下成功构建,但是在定位x64时出现链接错误。

第1步:下载最新的CMake 2.8.12.2并更新Windows PATH环境(在我的情况下,我使用的是MINMGW32 bash shell提示,但是如果我使用本机visual studio 2013 x64 shell运行cmake,则会遇到完全相同的链接问题。 )

$ export PATH = $ PATH:/ c / Program \ Files \(x86)/ CMake \ 2.8 / bin

验证Windows上Cmake的路径和版本

$ cmake --version cmake版本2.8.12.2

步骤2:将curl-7.35.0解压缩到文件夹c:\ temp \ curl-7.35.0“中,并创建一个并行文件夹” c:\ temp \ curl-7.35.0 \ build“。

步骤3:切换到build文件夹,并运行目标为“ Visual Studio 12”的Cmake作为所需的Visual Studio解决方案/项目组合

$ cmake -G“ Visual Studio 12” ../curl-7.35.0

这会产生大量的输出,如下所示,但是它的确也创建了针对X86型机器的可行的Visual Studio解决方案。

$ cmake -G“ Visual Studio 12” ../curl-7.35.0-C编译器标识为MSVC 18.0.21005.1-使用以下工具检查工作的C编译器:Visual Studio 12-使用以下工具检查工作的C编译器:Visual Studio 12-起作用-检测C编译器ABI信息-检测C编译器ABI信息-完成CMake在CMakeLists.txt:47发出警告(消息):curl cmake构建系统维护不善。意识到

-curl版本= [7.35.0]-在ws2_32中寻找getch;-在ws2_32中寻找getch;-找到-在winmm; ws2_32中寻找getch-在winmm; ws2_32中寻找getch-在wldap32中寻找cldap_open-在wldap32中寻找cldap_open-找到-在idn中寻找idna_to_ascii_lz; winmm; ws2_32- -在idn; winmm; ws2_32中寻找idna_to_ascii_lz-找不到-在ldap; winmm; ws2_32中寻找ldap_init-在ldap; winmm; ws2_32中寻找ldap_init-找不到-找不到OpenSSL,尝试设置路径到系统变量OPENSSL_ROOT_DIR中的OpenSSL根文件夹(丢失:OPENSSL_LIBRARIES OPENSSL_INCLUDE_DIR)

-寻找包含文件ws2tcpip.h-寻找包含文件ws2tcpip.h-找到-寻找包含文件ws2tcpip.h,winsock2.h-寻找包含文件ws2tcpip.h,winsock2.h-找到-寻找3个包含文件ws2tcpip.h,...,stdio.h-寻找3个包含文件ws2tcpip.h,...,stdio.h-找到-寻找4个包含文件ws2tcpip.h,...,stdio.h ,windows.h-寻找4个包含文件ws2tcpip.h,...,windows.h-找到-寻找5个包含文件ws2tcpip.h,...,winsock.h-寻找5个包含文件ws2tcpip .h,...,winsock.h-找到-寻找6个包含文件ws2tcpip.h,...,sys / filio.h-寻找6个包含文件ws2tcpip.h,...,sys / filio .h-找不到-寻找6个包含文件ws2tcpip.h,...,sys / ioctl.h-寻找6个包含文件ws2tcpip.h,...,sys / ioctl。h-找不到-查找6个包含文件ws2tcpip.h,...,sys / resource.h-寻找6个包含文件ws2tcpip.h,...,sys / resource.h-找不到-查找对于8个包含文件ws2tcpip.h,...,sys / uio.h-寻找8个包含文件ws2tcpip.h,...,sys / uio.h-未找到-寻找8个包含文件ws2tcpip.h ,...,sys / un.h-寻找8个包含文件ws2tcpip.h,...,sys / un.h-找不到-寻找9个包含文件ws2tcpip.h,...,arpa / tftp.h-寻找9个包含文件ws2tcpip.h,...,arpa / tftp.h-找不到-寻找9个包含文件ws2tcpip.h,...,assert.h-寻找9个包含文件文件ws2tcpip.h,...,assert.h-找到-寻找10个包含文件ws2tcpip.h,...,crypto.h-寻找10个包含文件ws2tcpip.h,...,crypto.h -找不到-寻找10个包含文件ws2tcpip.h,...,des。h-寻找10个包含文件ws2tcpip.h,...,des.h-未找到-寻找10个包含文件ws2tcpip.h,...,err.h-寻找10个包含文件ws2tcpip.h ,...,err.h-未找到-寻找10个包含文件ws2tcpip.h,...,errno.h-寻找10个包含文件ws2tcpip.h,...,errno.h-找到- -寻找12个包含文件ws2tcpip.h,...,gssapi / gssapi.h-寻找12个包含文件ws2tcpip.h,...,gssapi / gssapi.h-未找到-寻找12个包含文件ws2tcpip .h,...,gssapi / gssapi_generic.h-寻找12个包含文件ws2tcpip.h,...,gssapi / gssapi_generic.h-不寻找-寻找12个包含文件ws2tcpip.h,... ,gssapi / gssapi_krb5.h-寻找12个包含文件ws2tcpip.h,...,gssapi / gssapi_krb5.h-不存在d-寻找12个包含文件ws2tcpip.h,...,无idn。h-寻找12个包含文件ws2tcpip.h,...,idn-free.h-找不到-寻找12个包含文件ws2tcpip.h,...,ifaddrs.h-寻找12个包含文件ws2tcpip .h,...,ifaddrs.h-找不到-寻找13个包含文件ws2tcpip.h,...,krb.h-寻找13个包含文件ws2tcpip.h,...,krb.h-找不到-寻找13个包含文件ws2tcpip.h,...,libgen.h-寻找13个包含文件ws2tcpip.h,...,libgen.h-找不到-寻找13个包含文件ws2tcpip。 h,...,libssh2.h-寻找13个包含文件ws2tcpip.h,...,libssh2.h-找不到-寻找13个包含文件ws2tcpip.h,...,limits.h-寻找13个包含文件ws2tcpip.h,...,limits.h-找到-寻找14个包含文件ws2tcpip.h,...,locale.h-寻找14个包含文件ws2tcpip.h,... ,语言环境。h-找到-寻找15个包含文件ws2tcpip.h,...,netinet / tcp.h-寻找15个包含文件ws2tcpip.h,...,netinet / tcp.h-找不到-寻找15个包含文件ws2tcpip.h,...,pem.h-寻找15个包含文件ws2tcpip.h,...,pem.h-未找到-寻找15个包含文件ws2tcpip.h,..., poll.h-寻找15个包含文件ws2tcpip.h,...,poll.h-未找到-寻找15个包含文件ws2tcpip.h,...,rsa.h-寻找15个包含文件ws2tcpip。 .h,...,rsa.h-找不到-寻找17个包含文件ws2tcpip.h,...,ssl.h-寻找17个包含文件ws2tcpip.h,...,ssl.h-找不到-寻找17个包含文件ws2tcpip.h,...,stdbool.h-寻找17个包含文件ws2tcpip.h,...,stdbool.h-找到-寻找21个包含文件ws2tcpip.h ,...,h-寻找21个包含文件ws2tcpip.h,...,stropts.h-找不到-寻找22个包含文件ws2tcpip.h,...,tld.h-寻找22个包含文件ws2tcpip.h ,...,tld.h-找不到-寻找23个包含文件ws2tcpip.h,...,stddef.h-寻找23个包含ws2tcpip.h,...,stddef.h文件-找到- -寻找26个包含文件ws2tcpip.h,...,ldap.h-寻找26个包含文件ws2tcpip.h,...,ldap.h-找不到-寻找26个包含文件ws2tcpip.h,。 ..,sys / utsname.h-寻找26个包含文件ws2tcpip.h,...,sys / utsname.h-未找到-寻找26个包含文件ws2tcpip.h,...,idna.h- -寻找26个包含文件ws2tcpip.h,...,idna。h-找不到-找不到LDAP_H CURL_DISABLE_LDAP设置为ON-需要启用LDAP以支持LDAPS-检查size_t的大小-检查size_t的大小-完成-检查ssize_t的大小-检查ssize_t的大小-失败-检查long long的大小-检查long long的大小-检查long的大小-检查long的大小-检查short的大小-检查short的大小-检查int的大小-检查int的大小-完成-检查__int64的大小-检查__int64的大小-完成-检查time_t的大小-检查time_t的大小-完成-寻找基本名-寻找基本名-未找到- -寻找strncmpi-寻找strncmpi-未找到-寻找警报-寻找警报-未找到-寻找CRYPTO_cleanup_all_ex_data-寻找CRYPTO_cleanup_all_ex_data-未找到-寻找gethostbyname-寻找gethostbyname-找到-寻找strtoll-寻找strtoll-找到-寻找_strtoi64-寻找_strtoi64-找到-寻找strerror_r-寻找strerror_r-未找到-寻找siginterrupt-寻找siginterrupt -找不到-寻找叉子-寻找叉子-没找到-寻找freeaddrinfo-寻找freeaddrinfo-找到-寻找freeifaddrs-寻找freeifaddrs-找不到-寻找烟斗-寻找管道-找不到-寻找ftruncate-寻找ftruncate-找不到-寻找getprotobyname-寻找getprotobybyname-找到-寻找getrlimit-寻找getrlimit-找不到-寻找idn_free-寻找for idn_free-找不到-寻找idna_strerror-寻找idna_strerror-找不到-寻找tld_strerror-寻找tld_strerror-找不到-寻找setlocale-寻找setlocale-找到-寻找setrlimit-寻找setrlimit-找不到-寻找fcntl-寻找fcntl-找不到-寻找ioctl- -寻找ioctl-找不到-寻找setsockopt-寻找setsockopt-找到-寻找inet_pton-寻找inet_pton-找不到-执行卷曲测试HAVE_FCNTL_O_NONBLOCK-执行卷曲测试HAVE_FCNTL_O_NONBLOCK-失败-执行卷曲测试HAVE_IOCTLSOCKET-执行卷曲测试HAVE_IOCTLSOCKET-成功-执行卷曲测试HAVE_IOCTLSOCKET_CAMEL-执行卷曲测试HAVE_IOCTLSOCKET_CAMEL-失败-执行卷曲测试HAVE_IOCTLSOCKET_CAMEL_FIONBIOKIO-执行Curl测试HAVE_IOCTLSOCKET_CAMION_IOC进行卷曲测试HAVE_IOCTLSOCKET_FIONBIO-成功-进行卷曲测试HAVE_IOCTL_FIONBIO-进行卷曲测试HAVE_IOCTL_FIONBIO-失败-进行卷曲测试HAVE_IOCTL_SIOCGIFADDR-进行卷曲测试HAVE_LOCK_LOCK_SET_SET --SET -SET进行卷曲测试HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID-进行卷曲测试HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID-失败-进行卷曲测试HAVE_SOCKLEN_T-进行卷曲测试HAVE_SOCKLEN_T-成功-进行卷曲测试HAVE_BOOL_T--进行卷曲测试HAVE_BOOL_T-测试HAVE_FILE_OFFSET_BITS-失败-执行卷曲测试HAVE_GLIBC_STRERROR_R-执行卷曲测试HAVE_GLIBC_STRERROR_R-失败-执行卷曲测试HAVE_POSIX_STRERROR_R-执行卷曲测试HAVE_POSIX_STRERROR_R-失败-检查curl_off_t的大小-检查curl_off_t的大小-失败-检查socklen_t的大小-检查socklen_t的大小-完成-执行测试curl_cv_recv-执行测试curl_cv_recv-成功-执行测试int recv(int,void *,size_t,int)(curl_cv_func_recv_test)-执行测试int recv(int,void *,size_t,int)(curl_cv_func_recv_test)-成功-执行测试curl_cv_s -执行测试curl_cv_send-成功-执行测试int send(int,const void *,size_t,int)(curl_cv_func_send_t est)-执行测试int send(int,const void *,size_t,int)(curl_cv_func_send_t est)-成功-执行测试HAVE_MSG_NOSIGNAL-执行测试HAVE_MSG_NOSIGNAL-失败-执行测试HAVE_STRUCT_TIMEVAL-执行测试HAVE_STRUCT_TIMEVAL-成功-执行测试HAVE_POLL_FINE-完成-执行测试-检查sig_atomic_t的大小-完成-执行测试HAVE_SIG_ATOMIC_T_NOT_VOLATILE-执行测试HAVE_SIG_ATOMIC_T_NOT_VOLATILE-成功-检查struct sockaddr_storage的大小-检查struct sockaddr_storage的大小-CMake错误(列表)测试中的CMake警告(列表):测试失败。 add_subdirectory):源目录源目录源目录

C:/Users/jcoffey/main/extlibs/curl-7.35.0/tests/libtest

不包含CMakeLists.txt文件。

CMake不支持这种情况,但是它曾经偶然地工作,并且被允许兼容。

未设置策略CMP0014:输入目录必须具有CMakeLists.txt。运行“ cmake --help-policy CMP0014”以获取策略详细信息。使用cmake_policy命令设置策略并禁止显示此警告。此警告是针对项目开发人员的。使用-Wno-dev禁止它。

tests / CMakeLists.txt:2(add_subdirectory)上的CMake警告(dev):
源目录

C:/Users/jcoffey/main/extlibs/curl-7.35.0/tests/server

不包含CMakeLists.txt文件。

CMake不支持这种情况,但是它曾经偶然地工作,并且被允许兼容。

未设置策略CMP0014:输入目录必须具有CMakeLists.txt。运行“ cmake --help-policy CMP0014”以获取策略详细信息。使用cmake_policy命令设置策略并禁止显示此警告。此警告是针对项目开发人员的。使用-Wno-dev禁止它。

-配置完成-生成完成-构建文件已写入:C:/Users/jcoffey/main/extlibs/curl-7.35.0-build

步骤4:在Visual Studio中,使用配置管理器将目标类型更改为x64(我必须在其中选择一个新平台,然后选择X64并从Win32复制设置)。这是用于定位X64计算机目标的非常简单的步骤,为避免混淆,我在此处未包含逐步的详细信息。

步骤5选择解决方案,然后从Visual Studio 2013重新构建所有内容,随后将出现上述输出。

旁注:尽管我现在真的不需要SSL,但是很高兴知道如何告诉CMake LIBSSL内容的位置(我下载了一个预构建的程序包(32位和64位,包括SSL和其他库)来自http://www.confusedbycode.com/curl/,但是这些都是发布模式,我需要能够调试libCurl来了解正在遇到的一些奇怪问题。对于配置CMake的新手来说,它对于那些针对多个平台但更喜欢在Windows上开发的人来说似乎是一个非常有前途的工具,它肯定比gnu autotools容易。

johnco3

看起来CMake生成的解决方案文件不希望X64成为潜在目标。我发现这里的问题略有不同。

在此处输入链接说明

这是X64命令行选项的图片-正如我将配置管理器更改为使用X64之后所看到的

命令行-其他选项使用不正确的计算机“ X86”

命令行-其他选项将计算机手动更改为“ X64”

进行了这些更改之后,项目最终得以链接,并且我能够生成该库的调试版本。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Gyp:生成x64 Visual Studio解决方案

来自分类Dev

Gyp:生成x64 Visual Studio解决方案

来自分类Dev

Visual Studio 2013生成问题

来自分类Dev

Jenkins Visual Studio x64提示(用于CMake和Ninja)

来自分类Dev

使用 Visual Studio 2015 x64 和 CMake 构建 TBB

来自分类Dev

如何使用Visual Studio 2013在发布/调试x64模式下编译libprotobuf

来自分类Dev

配置Visual Studio 2013以允许ASPNETCOMPILER使用x64编译器进行预编译

来自分类Dev

Visual Studio:x86 / x64属性宏

来自分类Dev

Visual Studio:x86 / x64属性宏

来自分类Dev

cmake build x64 using whichever visual studio version is installed

来自分类Dev

使用安装的任何Visual Studio版本的cmake build x64

来自分类Dev

在Visual Studio 2013内部版本中以x64进程模式运行自定义构建任务

来自分类Dev

在Visual Studio 2012中同时将平台目标x86和x64

来自分类Dev

acos(double) 在 x64 和 x32 Visual Studio 上给出不同的结果

来自分类Dev

Visual Studio 2013和Cmake?

来自分类Dev

安装Visual Studio 2013 Ultimate时出错-Microsoft Visual C ++ 2013 x64分钟运行时-12.0.21005

来自分类Dev

安装Visual Studio 2013 Ultimate时出错-Microsoft Visual C ++ 2013 x64分钟运行时-12.0.21005

来自分类Dev

OpenCV生成问题Visual Studio 2013

来自分类Dev

Visual Studio社区2015更新1生成问题

来自分类Dev

无法在Visual Studio 2010中选择Platform x64

来自分类Dev

如何在Visual Studio 2017/2019中构建x64组装项目

来自分类Dev

删除用于Office Runtime(x64)的Microsoft Visual Studio 2010工具

来自分类Dev

Visual Studio将平台更改从x64还原为Win32

来自分类Dev

Visual Studio:从win32更改为x64时,显示链接错误

来自分类Dev

如何使用Visual Studio 14 2015 x64构建OpenEXR 2.2?

来自分类Dev

Visual Studio Debug 导致 SQL Server (x64) 高 CPU 使用率

来自分类Dev

在Visual Studio 2008中构建libcurl库

来自分类Dev

如何在Windows 10上使用Visual Studio 2015 x64配置和构建Tesseract OCR C ++

来自分类Dev

带有Visual C ++ 2017运行时库(x64)的Visual Studio安装程序错误

Related 相关文章

  1. 1

    Gyp:生成x64 Visual Studio解决方案

  2. 2

    Gyp:生成x64 Visual Studio解决方案

  3. 3

    Visual Studio 2013生成问题

  4. 4

    Jenkins Visual Studio x64提示(用于CMake和Ninja)

  5. 5

    使用 Visual Studio 2015 x64 和 CMake 构建 TBB

  6. 6

    如何使用Visual Studio 2013在发布/调试x64模式下编译libprotobuf

  7. 7

    配置Visual Studio 2013以允许ASPNETCOMPILER使用x64编译器进行预编译

  8. 8

    Visual Studio:x86 / x64属性宏

  9. 9

    Visual Studio:x86 / x64属性宏

  10. 10

    cmake build x64 using whichever visual studio version is installed

  11. 11

    使用安装的任何Visual Studio版本的cmake build x64

  12. 12

    在Visual Studio 2013内部版本中以x64进程模式运行自定义构建任务

  13. 13

    在Visual Studio 2012中同时将平台目标x86和x64

  14. 14

    acos(double) 在 x64 和 x32 Visual Studio 上给出不同的结果

  15. 15

    Visual Studio 2013和Cmake?

  16. 16

    安装Visual Studio 2013 Ultimate时出错-Microsoft Visual C ++ 2013 x64分钟运行时-12.0.21005

  17. 17

    安装Visual Studio 2013 Ultimate时出错-Microsoft Visual C ++ 2013 x64分钟运行时-12.0.21005

  18. 18

    OpenCV生成问题Visual Studio 2013

  19. 19

    Visual Studio社区2015更新1生成问题

  20. 20

    无法在Visual Studio 2010中选择Platform x64

  21. 21

    如何在Visual Studio 2017/2019中构建x64组装项目

  22. 22

    删除用于Office Runtime(x64)的Microsoft Visual Studio 2010工具

  23. 23

    Visual Studio将平台更改从x64还原为Win32

  24. 24

    Visual Studio:从win32更改为x64时,显示链接错误

  25. 25

    如何使用Visual Studio 14 2015 x64构建OpenEXR 2.2?

  26. 26

    Visual Studio Debug 导致 SQL Server (x64) 高 CPU 使用率

  27. 27

    在Visual Studio 2008中构建libcurl库

  28. 28

    如何在Windows 10上使用Visual Studio 2015 x64配置和构建Tesseract OCR C ++

  29. 29

    带有Visual C ++ 2017运行时库(x64)的Visual Studio安装程序错误

热门标签

归档