Сборка проектов в Visual Studio - PullRequest
0 голосов
/ 26 марта 2009

Я новичок в Windows и Visual Studio. У меня есть большой опыт программирования в Linux. Я пытаюсь собрать (это всего лишь одно слово для компиляции и ссылки) этот пример кода из учебника. Я сделал пустой проект, добавил исходные и заголовочные файлы в проект. Код компилируется нормально. Тем не менее, я получаю все эти ошибки во время ссылки. Происходит то, что код вызывает несколько функций, которые VS не может найти. В частности, все ошибки

ping.obj: ошибка LNK2019, неразрешенный внешний символ

Пример кода взят из Ch11 или Сетевого программирования для Windows. Речь идет о создании сырых сокетов для использования в программе ping. Кроме того, код поставляется с Makefile, но я не знаю, как использовать его с VS ...

Итак, в основном мне нужно знать, как просто поместить некоторый код в VS и правильно его собрать. Если бы кто-нибудь мог помочь мне с этим или указать мне на достойный ресурс, я был бы очень признателен.

edit: я использую VS 2008 и C ++

edit2: я сделал проект makefile и заполнил команду build cl ping.cpp resol.cpp -out: ping.exe Ws2_32.lib

теперь он говорит, что моя сборка прошла успешно, но нигде нет .exe ... arg !! 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.

Ответы [ 3 ]

3 голосов
/ 26 марта 2009

Я предполагаю, что вы не связываетесь с необходимой библиотекой, и, поскольку вы пишете приложение ping, я предполагаю, что это библиотека Windows Sockets. Скорее всего, вам нужно добавить ws2_32.lib в качестве связанного модуля.

Попробуйте сделать это: Перейдите в Параметры проекта-> Линкер-> Ввод

Добавить Ws2_32.lib

Если это не помогло, пожалуйста, опубликуйте всю ссылку. Это должно прояснить, чего не хватает.

1 голос
/ 26 марта 2009

Полагаю, вам также нужно включить заголовок stdafx.h. Это заголовочный файл, который IDE помещает в ваш проект при его создании. Прошло некоторое время с тех пор, как я написал любой C ++ с использованием VS 2008, но если я правильно помню, я столкнулся с кучей проблем с этим. Насколько я помню, заголовок stdafx добавляет кучу директив компилятора, которые требуются компилятору VS 2008.

0 голосов
/ 26 марта 2009

Это в C ++?

Взгляните на эту статью от MSDN, я думаю, это то, что вы ищете Я не знаю, какая у вас версия visual studio, но я не думаю, что что-то сильно меняется от версии к версии. В любом случае, вы найдете все версии на этом сайте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...