我是Windows和Visual Studio的新手。我有很强的Linux编程背景。我正在尝试构建(仅构建一个用于编译和链接的单词)来自教科书的示例代码。我做了一个空项目,将源文件和头文件添加到项目中。代码编译得很好。但是,我在链接时收到所有这些错误。发生的事情是代码调用了VS无法找到的一堆函数。具体来说,所有错误都是
ping.obj:错误LNK2019未解析的外部符号
示例代码来自Ch11或Windows网络编程。它是关于创建用于制作ping程序的原始套接字。此外,代码附带一个Makefile,但我不知道如何使用VS ...
所以,基本上我需要知道如何将一些代码放入VS并使其正确构建。如果有人能帮助我,或者指出一个合适的资源,我真的很感激。
编辑:我正在使用VS 2008和C ++
edit2:我创建了一个makefile项目并用。填充了build命令 cl ping.cpp resolve.cpp -out:ping.exe Ws2_32.lib
现在它告诉我我的构建成功了,但是在任何地方都没有.exe ... Windows对我毫无意义。
这是它告诉我的:
1>------ Build started: Project: ping, Configuration: Debug Win32 ------
1>Performing Makefile project actions
1>Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.21022.08 for 80x86
1>Copyright (C) Microsoft Corporation. All rights reserved.
1>cl : Command line warning D9035 : option 'o' has been deprecated and will be removed in a future release
1>ping.cpp
1>resolve.cpp
1>Generating Code...
1>Microsoft (R) Incremental Linker Version 9.00.21022.08
1>Copyright (C) Microsoft Corporation. All rights reserved.
1>/out:ping.exe
1>/out:ut:ping.exe
1>ping.obj
1>resolve.obj
1>Ws2_32.lib
1>Build log was saved at "file://c:\Documents and Settings\Devin.DEVIN-DESK\My
Documents\Visual Studio 2008\Projects\raw_socks\ping\Debug\BuildLog.htm"
1>ping - 0 error(s), 1 warning(s)
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
edit3:这对我来说很有意义。我有两个标题和两个源文件,无论我做什么,我似乎都无法编译和链接。 Linux中的一个非常简单易用的过程在Windows中是错综复杂的。
答案 0 :(得分:3)
我的猜测是你没有链接到一个必需的库,因为你正在编写ping应用程序,我猜它是Windows套接字库。您可能需要将ws2_32.lib添加为链接模块。
尝试这样做: 转到项目选项 - >链接器 - >输入
添加Ws2_32.lib
如果无法修复,请发布整个链接错误。它应该更清楚地说明缺少什么。
答案 1 :(得分:1)
我相信您还需要包含stdafx.h标头。它是IDE在您创建项目时放入项目的头文件。自从我使用VS 2008编写任何C ++以来已经有一段时间了,但如果我没记错的话,我遇到了很多问题。如果我记得,stdafx标头添加了一堆VS 2008编译器所需的编译器指令。
答案 2 :(得分:0)
是用C ++吗?
从msdn看一下这个article,我想这就是你要找的东西。我不知道你有什么版本的视觉工作室,但我不认为从版本到版本的变化很大。无论如何,你会在该网站上找到所有版本。