2009-03-25 4 views
0

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

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

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

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

редактировать: Я использую VS 2008 и C++

edit2: Я сделал проект Makefile и разливают в команде сборки с сл ping.cpp resolve.cpp отъезда: 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.

+0

Я был/был в том же положении - фон в разработке Linux и порой должен использовать визуальные студии. Build does == compile и link, это обычная ошибка компоновщика, и ответ на добавление .lib, скорее всего, правильный. Кроме того, .lib! = .dll, и эта разница несколько раз путала меня. – Voltaire

+0

И для будущей боли, обратите внимание на файлы манифеста. Если вы намереваетесь использовать библиотеки с открытым исходным кодом, вы находитесь в мире развлечений;) – Voltaire

+0

Да, я заметил * .exe.manifest. (Что-то я не помню), и я понятия не имею, что это такое. – devin

ответ

3

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

Попробуйте сделать это: Перейти к проекту Options-> Linker-> Ввод

Добавить Ws2_32.lib

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

0

Это что, на C++?

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

1

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

Смежные вопросы