DEV-C++에 대한 문의....ㅜ.ㅜ

lee64의 이미지

저는 리눅스 프로그래밍을 첨하는 초보입니다..

다름이 아니고 DEV-C++에서 GTK를 사용한 프로그램을 하려고 합니다..

일단 DEV-C++ 사이트에서 devcpp4980.exe파일을 받아서 설치했습니다.

저는 윈2000을 사용하구요. 일단 설치를 하고 나니 C:\Dev-Cpp라는 폴더에

설치가 되더군요.. 그리고 업데이트를 실행하니 GTK 패키지가 있어서 다운받아 설치했습니다.

C:\Dev-Cpp\include\gtk-2.0이 생긴것을 확인 했습니다...

그리고 인터넷에서 hello를 출력하는 소스를 하나 구했습니다...

(소스를 만드신분이 누구신지는 모르겠습니다. 함부로 써서 죄송합니다.)

#include <gtk/gtk.h>

void hello (GtkWidget *widget, gpointer data)
{
g_print ("Hello World\n");
}

gint delete_event(GtkWidget *widget, GdkEvent *event, gpointer data)
{
g_print ("delete event occured\n");
return (FALSE);
}

void destroy (GtkWidget *widget, gpointer data)
{
gtk_main_quit ();
}

int main (int argc, char *argv[])
{
GtkWidget *window;
GtkWidget *button;

gtk_init (&argc, &argv);

window = gtk_window_new (GTK_WINDOW_TOPLEVEL);

gtk_signal_connect (GTK_OBJECT (window), "delete_event",
GTK_SIGNAL_FUNC (delete_event), NULL);

gtk_signal_connect (GTK_OBJECT (window), "destroy",
GTK_SIGNAL_FUNC (destroy), NULL);

gtk_container_border_width (GTK_CONTAINER (window), 10);

button = gtk_button_new_with_label ("Hello World");

gtk_signal_connect (GTK_OBJECT (button), "clicked",
GTK_SIGNAL_FUNC (hello), NULL);

gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
GTK_SIGNAL_FUNC (gtk_widget_destroy),
GTK_OBJECT (window));

gtk_container_add (GTK_CONTAINER (window), button);

gtk_widget_show (button);

gtk_widget_show (window);

gtk_main ();

return 0;
}

위의 소스를 복사해서 main.cpp라는 파일을 만들어 복사해 넣었습니다..

그리고 Dev-C++를 실행해서 이 파일을 컴파일 시켰는데...

gtk/gtk.h 파일을 찾을 수 없다는 둥 에러가 납니다...

분명 C:\Dev-Cpp\include\gtk-2.0\gtk\gtk.h가 있거든요..

제가 워낙 몰라서요.. 무엇이 잘못된걸까요? 위에 처럼 DEV-C++ 업데이트에서 GDK패키지를 설치하면 라이브러리 설정을 안해도 사용이 가능한거 아닌가요?
그리고 윈2000을 사용하고 있는데요.. 이렇게 gtk를 사용해서 프로그램을 만들어 실행파일을 실행하면 리눅스 환경이 아니더라도 실행 모습을 볼 수 있나요? 너무 초보적인 질문인가요?ㅜ.ㅜ .. 죄송합니다만 제게 도움을 좀 주세요..

그리고 혹시나 해서 http://www.dropline.net/gtk/download.php 사이트에서 GTK-Runtime-Environment-2.2.1.2.exe과 GTK-Development-Environment-2.2.1.2.exe을 받아서 설치도 했습니다.. 여튼 잘 안되네요.

답변을 부탁드리겠습니다.. 장마가 시작되었는데 모두 피해가 없으시길....

mykldp의 이미지

그냥 소스 파일을 편집하지 마시고

[file] - [new] - [project] 메뉴에 보면 gtk 프로젝트가 있을겁니다.

이렇게 프로젝트를 생성해서 사용하시면 컴파일러와 링커 옵션이 자동으로 잡힐겁니다.

물론 gtk로 돌아가는 프로그램을 보실 수 있습니다. 하지만..

gtk의 윈도우 포트는 많이 불안정합니다. 리눅스만큼 예쁜 모습을 보여주지도 않구요.

gtk 뿐이 아니라 dev-c++에 들어있는 컴파일러인 mingw도 스탠다드 라이브러리와 관련된 답답한 문제가 제법 있습니다.

가능하다면 리눅스 머신에서 프로그램 하시는게 좋을겁니다^^

혹시나 개발환경이 익숙치 않아서 그러신다면 리눅스에서 Kdevelop 이나 anjuta IDE 등을 이용하시는 것도 괜찮을 겁니다.
(gtk를 공부하신다니 anjuta가 좋겠군요.)

lee64의 이미지

답변 고맙습니다...

그런데 [file] - [new] - [project] 에 gtk 프로젝트가 없습니다..

패키지를 다시 설치해봤는데요.. 그래도 없네요. 혹시나 해서 sdl쪽 패키지를

깔아보았는데요.. 그건 보이는데요..

뭐가 잘못된 모양인데요... 어떻게 하면 되겠습니까?

안녕하세요..^^

리눅스 초보입니다.. 우연히 게시판에 들어왔습니다.. 아직 모르는게 많아서 많은 분들의 도움이 필요합니다.

잘 부탁드립니다. ^_^ 그럼 ..

aero의 이미지

Project 옵션에 가서 include 와 library 디렉토리를 지정해주고
컴파일 옵션에 gcc에서 해당 라이브러리를 로딩하는 옵션인
-lgtk -lglib 등등을 -l 옵션으로 지정을 해야 합니다.

Dev-C++은 최종적으로 Makefile.win 이라는 make 파일을
만들어서 내부적으로 make를 돌려서 컴파일 하는데
GUI 메뉴에서 위처럼 이것저것 설정하면 Make파일에서는
gcc -o main main.c -Ic:\gtk\include -Lc:\gtk\lib -lgtk -lgdk 이런
비슷한 형식으로 보이게 되죠.
옵션은 LINUX/UNIX의 gcc랑 별반다를게 없으니 보시면 알겁니다.

그리고 컴파일된 바이너리가 실행 되려면 gtk와 관련된 runtime dll들이
path가 설정된 디렉토리에 존재해야합니다.

lee64의 이미지

aero 님 답변 고맙습니다...

솔직히 님의 말씀을 다 이해를 못해서요.. 죄송합니다..

일단 제가 한 과정을 설명드릴께요... 일단 제일 위에 질문에서 했던 다음부터

말씀드리겠습니다.. mykldp님의 답변에 있는 gtk 프로젝트는 계속 보이지가 않고 있구요..

aero님의 말씀하신것이 제가 http://www.dropline.net/gtk/support.php
사이트에서 하라는 것과 비슷한거 같아서요.. 거기에 나와있는 것대로 해보았습니다..
1. Download and install Dev-C++ 4.9.8.0 gcc 32.
2. Run update
3. Install GTK+ Development Environment and GTK+ Runtime Environment
4. Add into compiler option: -I\gtk-2.0 -I\gtkdeps-2.0 -I<LIB>\gtk-2.0\include -I\atk-1.0 -I\pango-1.0 -I\glib-2.0 -I<LIB>\glib-2.0 -I<LIB>\glib-2.0\include -mms-bitfields
5. Add into linker option: -lgtk-win32-2.0 -lgdk-win32-2.0 -lgthread-2.0 -lgdi32 -lole32 -luuid -latk-1.0 -lgdk_pixbuf-2.0 -lpangowin32-1.0 -lgdi32 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -intl -liconv -mno-cygwin -mms-bitfields
6. Compiler options/directories/c++ includes/ add: C:\Dev-Cpp\include\c++\mingw32
7. Please use using namespace std;
8. Compiler options/binaries add: C:\Program Files\Common Files\GTK\2.0\lib

제가 제일 첨 질문 했을때 3번까지는 했었거든요.. 근데 dev-c++에서 패키지가 있길래 그걸 설치하면 aero님이 말씀하신 그런 설정을 안해도 되지 않을까 해서 질문을 올렸습니다...그런데 안되어서....

그래서 4번부터 해봤습니다. dev-c++에서 도구에 컴파일 설정을 클릭하면 "컴파일러" 탭에 "컴파일 추가명령"을 체크하고 "-I\gtk-2.0 -I\gtkdeps-2.0 -I<LIB>\gtk-2.0\include -I\atk-1.0 -I\pango-1.0 -I\glib-2.0 -I<LIB>\glib-2.0 -I<LIB>\glib-2.0\include -mms-bitfields "을 복사해 넣었습니다...

그리고 그 밑에 "다음의 링커 추가명령사용" 을 체크하고 "-lgtk-win32-2.0 -lgdk-win32-2.0 -lgthread-2.0 -lgdi32 -lole32 -luuid -latk-1.0 -lgdk_pixbuf-2.0 -lpangowin32-1.0 -lgdi32 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -intl -liconv -mno-cygwin -mms-bitfields"을 복사해 넣었습니다..

그리고 6번으로 가서 도구-컴파일러설정에 디렉토리 텝에서 "c++ includes" 에 "C:\Dev-Cpp\include\c++\mingw32"을 선택 추가했습니다.

그리고 7번에는 제가 영어실력이 딸려서 확실한 의미를 잘 모르겠습니다..
그래서 8번으로 넘어갔습니다. 도구-컴파일러설정에 디렉토리 텝에 "라이브러리"에 C:\Program Files\Common Files\GTK\2.0\lib을 추가했습니다.

이렇게 했는데 에러가 납니다... gtk/gtk.h를 찾을 수 없다고 하길래 여기에서
"c++ includes"에 "C:\Dev-Cpp\include\gtk-2.0"을 추가하니까 이 에러는 안나고 다른 atk.h를 못찾는다해서 또 "c++ includes"에 최종경로까지 추가를 해주고 해주고 하니 이제는 파일을 못 찾는다는 에러는 나지않고

[Linker error] undefined reference to `__w32_sharedptr_initialize'

이런 에러들만 많이 납니다.. aero님 mykldp님 또 다른 고수님들. 이것 참 죽겠습니다.. 뭐가 잘못인가요.? 저 위에 아까 그냥 넘어갔다는 7번때문인가요..

너무 몰라도 너무 몰르죠.. 죄송합니다... 제발 가르쳐 주세요.. 부탁드립니다..

안녕하세요..^^

리눅스 초보입니다.. 우연히 게시판에 들어왔습니다.. 아직 모르는게 많아서 많은 분들의 도움이 필요합니다.

잘 부탁드립니다. ^_^ 그럼 ..

ruseel의 이미지

Quote:
7. Please use using namespace std;

7번은 소스코드의 윗 부분에 (#include 아래에다가 ??? ^^; )

using namespace std;

라는 줄을 추가하라는 소리입니다.

-------
From : GTK를 한 번도 못써본 사람

lee64의 이미지

억.. 그러쿤요.. 감사합니다..^^;

안녕하세요..^^

리눅스 초보입니다.. 우연히 게시판에 들어왔습니다.. 아직 모르는게 많아서 많은 분들의 도움이 필요합니다.

잘 부탁드립니다. ^_^ 그럼 ..

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.