2011-07-07 4 views
2

저는 잠시 VS2008/2010을 사용 해왔고 C/C++ 개발 (주로 C) 용으로 Eclipse Helions를 사용하는 법을 배우려합니다.몇 가지 Eclipse 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은 무엇입니까? 이클립스에 어디에서 포함 시키시겠습니까? 경로를 추가해야합니까?

3) VS를 주로 사용하여 메이크 파일을 처음 사용했습니다. 커스텀 메이크 파일은 어떻게 포함합니까? 메이크 파일로 시작하는 좋은 지침이 있습니까?

4) VS와 같은 인텔리 센스가 있습니까?

지금 알아낼 수 있습니다. 감사합니다.

편집 : 첫 대답에 대응 : 그것은 컴파일러의로

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 
+0

어떤 툴체인 (MinGW, Cygwin 또는 Visual Studio)를 사용하고 있습니까? Makefile을 사용할 계획이라면 MinGW 또는 Cygwin이 필요합니다. 또한 프로젝트 속성에서'C/C++ General> Paths and Symbols'을 살펴보십시오. –

+0

Cygwin C 컴파일러를 사용하고 있습니다 – KaiserJohaan

답변

2

우선, Cygwin에서 일반적으로 GCC를 사용합니다. 즉, VS 컴파일러와 편집기에서 찾을 수있는 특별한 Windows 지원은 없습니다. 손을 더럽힐 준비를하십시오.

내 CDT 버전이 약간 오래된데 Cygwin이 설치되어 있지 않아 아래 사항 중 일부가 정확하지 않을 수 있음을 명심하십시오. 또한 언급 한 모든 컴파일러 옵션은 gcc manual에 있습니다. 샘플에서

1) 아무도 (내가 GCC 당신을 위해 그렇게 할 것입니다 생각하지 않습니다 만 확인합니까) WIN32 또는 _WIN32을 정의하지 않습니다. 이 문제를 해결하려면 windows.h 헤더를 포함시켜야합니다.이 헤더는 올바른 매크로를 정의하는 데 도움이됩니다. -D 컴파일러 스위치 (makefile 또는 Eclipse 메뉴를 통해 구성 가능)를 사용할 수도 있습니다.

정의를 수정 한 후에 누락 된 포함 오류가 발생하면 windows 헤더가 C:\cygwin\usr\include\w32api 폴더에 있다고 생각합니다. 포함 경로에 추가하려면 프로젝트 속성을 열고 C/C++ General > Paths and Symbols으로 이동하기 만하면됩니다. Includes 탭의 GNU C 그룹에 경로를 추가합니다. 프로젝트 구성 방법에 따라 이미 완료되었을 수 있습니다.

자신 만의 makefile로 빌드하는 경우 인덱서가 해당 헤더를 찾아 구문 분석 할 수 있으므로 이전 단계를 수행해야합니다. 컴파일러에 포함 폴더에 대해 알려면 -I 스위치를 사용하십시오.

2) 나는 ws2_32.lib가 winsock2의 lib 파일이라는 것을 추측 할 것입니다. 이 경우 누가 건물을 책임지고 있는지 완전히 모르겠습니다 (대신 사용할 수있는 .dll이 있습니까?). c:\cygwin\usr\lib 폴더 또는 c:\cygwin\usr\local\lib 폴더를 확인하는 것이 좋습니다.

관리되는 프로젝트를 사용하는 경우 (Eclipse에서 메이크 파일을 빌드하는 경우) 프로젝트 속성으로 이동하여 C/C++ Build > Settings으로 이동하십시오. Tool Settings 탭에서 링커 섹션의 libraries 항목으로 이동하십시오. 해당 상자에 lib 파일의 이름과 폴더를 추가하기 만하면됩니다.

자신의 메이크 파일에서 -l 컴파일러 스위치를 사용하여 라이브러리를 지정하고 -L 컴파일러 스위치를 사용하여 검색 경로를 지정하는 것이 좋습니다.

3) 메이크 파일을 시작하기에 좋은 장소는 GNU make manual입니다.

Windows에서 Makefile을 실행하는 방법에 대한 한 가지 세부 정보 : Cygwin 또는 MinGW에서 제공하는 셸을 사용해야합니다. 그렇지 않으면 rm과 같은 명령이 정의되지 않으며 이로 인해 사용자의 삶이 매우 어려워 질 수 있습니다.

CMake도 고려해 볼 수 있습니다. 더 큰 프로젝트에서 더 쉽게 사용하고 확장 할 수 있습니다.

프로젝트에서 직접 만든 메이크 파일을 사용하려면 새로운 Makefile project을 만들고 프로젝트 폴더의 루트에 Makefile 파일을 덤프하면됩니다. 그게 전부 야.

4) 네,하지만 인텔리 센스라고는하지 않습니다. 소스 코드의 어느 곳에서나 CTRL+Space을 누르기 만하면됩니다.

기타 재미있는 도구는 마우스 오른쪽 버튼 클릭 메뉴에서 찾을 수 있습니다. 내 개인 즐겨 찾기 파일을 열고 열 수 CTRL+SHIFT+R 찾기 및 열 수있는 파일 내에서 \ variable \ function \ define 형식을 찾아 \ function \ define 형식을 찾으려면 \ variable \ function \ define 및 CTRL+O 엽니 다.

인덱서는 (주로 C++ 코드를 파싱 할 때) 약간 미쳐 갈 수 있습니다. 상단에있는 Windows > Preferences 메뉴에서 C/C++ > Indexer 항목으로 이동하여 동작을 수정할 수 있습니다.

이 정보가 도움이되기를 바랍니다.

+0

큰 답변입니다! 도서관에 문제가 있습니다. C : \ cygwin \ lib \ w32api에 winsock2 cygwin-variant (libws2_32.a라는 이름)가 있습니다. 그 경로를 "라이브러리 경로"에 추가하고 libws2_32.a를 "라이브러리"에 추가했습니다. 아직 라이브러리를 찾을 수 없다는 오류가 발생합니다. 원본 게시물의 오류를 편집했습니다. – KaiserJohaan

+0

@ 카이저 문제가 생겼던 것을 기억하고 있습니다. 나는 그것을 작동시키는 데 사용 된 비전 부두 주문을 기억하지 않습니다. . lib 파일에서 확장자를 제거하거나 폴더 스타일을 유닉스 스타일로 변경하십시오 (\ by /를 바꿉니다). 그것은 또한 cygwin 셸의 경로 대 Windows의 경로 ('/ c/cygwin/...'대'C : \ cygwin \ ...')와 관련이있을 수 있습니다. 아, 위의 모든 조합을 시도해보십시오. –

+0

수 없습니다 : | Cygwin 쉘을 열면 라이브러리는 올바른 위치에 있어야합니다. – KaiserJohaan