【发布时间】:2016-08-14 23:06:35
【问题描述】:
我正在尝试构建usrsctp 库。使用 cmake 它构建并且不显示任何错误。使用 nmake 构建显示了这一点:
Microsoft (R) Program Maintenance Utility Version 11.00.60610.1
Copyright (C) Microsoft Corporation. All rights reserved.
cl -DSCTP_DEBUG -DSCTP_SIMPLE_ALLOCATOR -DSCTP_PROCESS_LEVEL_LOCKS -D__Userspace__ -D__Userspace_os_Windows -DINET -DINET6 -D_LIB /I. /W3 /WX -c user_environment.c
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\cl.EXE"' : return code '0xc0000135'
Stop.
在 cmake build 之后,我尝试使用 dll_export_viewer 查看其中的内容,发现它是空的。我的问题是如何正确构建库(.lib)和/或(.dll)?
更新 #1
CMake 输出:
D:\Desktop\usrsctp>cmake -G "Visual Studio 12 2013" D:\Downloads\usrsctp-0.9.3.0\usrsctplib
-- The C compiler identification is MSVC 18.0.40629.0
-- The CXX compiler identification is MSVC 18.0.40629.0
-- Check for working C compiler using: Visual Studio 12 2013
-- Check for working C compiler using: Visual Studio 12 2013 -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler using: Visual Studio 12 2013
-- Check for working CXX compiler using: Visual Studio 12 2013 -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of size_t
-- Check size of size_t - done
-- Check size of ssize_t
-- Check size of ssize_t - failed
-- Looking for sys/socket.h
-- Looking for sys/socket.h - not found
-- Looking for sys/queue.h
-- Looking for sys/queue.h - not found
-- Looking for linux/if_addr.h
-- Looking for linux/if_addr.h - not found
-- Looking for linux/rtnetlink.h
-- Looking for linux/rtnetlink.h - not found
-- Looking for netinet/ip_icmp.h
-- Looking for netinet/ip_icmp.h - not found
-- Looking for socket
-- Looking for socket - not found
-- Looking for inet_addr
-- Looking for inet_addr - not found
-- Performing Test HAVE_SA_LEN
-- Performing Test HAVE_SA_LEN - Failed
-- Performing Test HAVE_SIN_LEN
-- Performing Test HAVE_SIN_LEN - Failed
-- Performing Test HAVE_SIN6_LEN
-- Performing Test HAVE_SIN6_LEN - Failed
-- link library: ws2_32
-- Configuring done
-- Generating done
-- Build files have been written to: D:/Desktop/usrsctp
Cmake 构建输出: D:\Desktop\usrsctp>cmake --build 。 Microsoft (R) Build Engine 版本 12.0.40629.0 [Microsoft .NET 框架,版本 4.0.30319.42000] 版权所有 (C) 微软公司。保留所有权利。
Build started 2016-04-21 19:20:52.
Project "D:\Desktop\usrsctp\ALL_BUILD.vcxproj" on node 1 (default targets).
Project "D:\Desktop\usrsctp\ALL_BUILD.vcxproj" (1) is building "D:\Desktop\usrsctp\ZERO_CHECK.vcxproj" (2) on node 1 (default targets).
PrepareForBuild:
....
Build succeeded.
0 Warning(s)
0 Error(s)
Time Elapsed 00:00:29.86
【问题讨论】:
-
为什么在标记 Visual Studio 2013 时使用 Visual Studio 2012?也许这是问题的一部分?
-
你能说得更具体点吗?我的编程知识不深
-
尝试通过cmake生成Visual Studio项目并在VS中构建:cmake -G "Visual Studio 12 2013" ./
-
您的输出显示您正在使用“Visual Studio 2012”进行编译。但是,您将问题标记为“Visual Studio 2013”,您使用的是哪一个?
-
cmake -G "Visual Studio 11 2013"应该是cmake -G "Visual Studio 12 2013"
标签: c++ visual-studio-2013 dll build