Пара вопросов по Eclipse C / C ++ - PullRequest
2 голосов
/ 07 июля 2011

Я уже некоторое время использую VS2008 / 2010 и собираюсь научиться использовать Eclipse Helions для разработки на C / C ++ (в основном C).

Я немного запутался в библиотеках и, тем не менее, включаю.

1) Как правильно включить winsock2.h например? Я пробовал это:

#ifndef CONFIG_H_
#define CONFIG_H_


/*  Windows-Build   */
#if defined(WIN32) || defined(_WIN32)
#include <winsock2.h>
#endif

SOCKET sock;

#endif /* CONFIG_H_ */

Но компилятор не распознает SOCKET. Вы должны вручную добавить полный путь к winsock2 где-нибудь?

2) А как насчет ws2_32.lib? Где вы включаете это в Eclipse? Вы также должны добавить путь?

3) Я использую VS в основном, я новичок в makefiles. Как вы включаете пользовательские make-файлы? Есть ли хорошее руководство по запуску с make-файлами?

4) Есть ли intellisense как в VS?

Вот что я могу понять прямо сейчас. Спасибо!

EDIT: В ответ на первый ответ:

Building target: Filesharing_core.dll
Invoking: Cygwin C Linker
gcc -L"C:\cygwin\lib\w32api" -shared -o"Filesharing_core.dll"  ./src/test.o   -llibws2_32.a
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/bin/ld: cannot find -llibws2_32.a
collect2: ld returned 1 exit status
make: *** [Filesharing_core.dll] Error 1

1 Ответ

2 голосов
/ 08 июля 2011

Прежде всего, Cygwin обычно использует GCC в качестве компилятора. Это означает, что нет специальной поддержки окон, которую вы найдете в компиляторе и редакторе VS. Будьте готовы запачкать руки.

Имейте в виду, что моя версия CDT немного устарела, и у меня не установлен Cygwin, поэтому некоторые из перечисленных ниже действий могут быть неточными. Также все параметры компилятора, которые я упоминаю, подробно описаны в руководстве gcc .

1) В вашем примере никто не определяет WIN32 или _WIN32 (я не думаю, что GCC сделает это за вас, но сделайте проверку). Чтобы это исправить, вам нужно будет включить заголовок windows.h, который (я думаю) позаботится об определении правильных макросов. Вы также можете использовать переключатель компилятора -D (настраивается в вашем make-файле или через меню eclipse).

Если вы обнаружите пропущенные ошибки включения после того, как вы исправите определения, я считаю, что заголовки Windows находятся в папке C:\cygwin\usr\include\w32api. Чтобы добавить это в свой путь включения, просто откройте свойства проекта и перейдите к C/C++ General > Paths and Symbols. Добавьте путь к группе GNU C на вкладках Includes. В зависимости от того, как вы настроили свой проект, это, возможно, уже было сделано для вас.

Если вы создаете свой собственный make-файл, вам все равно следует выполнить предыдущий шаг, поскольку он позволит индексатору находить и анализировать эти заголовки. Чтобы сообщить компилятору о папке include, используйте переключатель -I.

2) Я собираюсь догадаться, что ws2_32.lib - это файл lib для winsock2. Если это так, я не совсем уверен, кто несет ответственность за его сборку (есть ли .dll, который вы можете использовать вместо этого?). Возможно, вы захотите проверить папку c:\cygwin\usr\lib или c:\cygwin\usr\local\lib.

Если вы используете управляемый проект (eclipse создает для вас make-файл), перейдите в свойства вашего проекта и перейдите к C/C++ Build > Settings. На вкладке Tool Settings перейдите к элементу libraries в разделе компоновщика. Просто добавьте имя файла lib и папку в соответствующие поля.

В вашем собственном make-файле вы захотите использовать ключ компилятора -l, чтобы указать библиотеку, и ключ компилятора -L, чтобы указать путь поиска.

3) Хорошим местом для начала работы с make-файлами было бы GNU make manual .

Одна деталь о запуске Makefile в Windows: обязательно используйте оболочку, предоставленную Cygwin или MinGW. В противном случае такие команды, как rm, не будут определены, и это сделает вашу жизнь очень сложной.

Вы также можете рассмотреть CMake . Его проще использовать и лучше масштабировать для крупных проектов.

Чтобы использовать созданный вручную make-файл в своем проекте, просто создайте новый Makefile project и поместите файл Makefile в корень папки вашего проекта. Вот и все.

4) Да, есть, но это не называется intellisense. Просто нажмите CTRL+Space в любом месте вашего исходного кода, чтобы открыть его.

Другие забавные инструменты можно найти в меню правой кнопки мыши. Мои личные фавориты включают CTRL+SHIFT+R, чтобы найти и открыть файл, CTRL+SHIFT+T, чтобы найти и открыть тип \ variable \ function \ define, и CTRL+O, чтобы найти и перейти к типу \ variable \ function \ define в открытом файле.

Индексатор может иногда сходить с ума (в основном при разборе кода C ++). Вы можете изменить его поведение, перейдя в меню Windows > Preferences вверху и перейдя к элементу C/C++ > Indexer.

Надеюсь, это поможет.

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