PDA

View Full Version : نصب gtk در ویندوز و پیکربندی ان برای کامپایل برنامه ها در ویژوال استدیو 2005



hamid206
پنج شنبه 07 تیر 1386, 10:08 صبح
برای نصب gtk در ویندوز ابتدا کتابخانه gtk برای نصب در ویندوز را از ادرس زیر دانلود و نصب کنید
http://sourceforge.net/project/showfiles.php?group_id=98754&package_id=111411

حال برای پیکربندی ان برای استفاده در ویژوال استدیو 2005 کار های زیر را انجام دهید
یک تکست فایل ایجاد کنید و کدهای زیر را در ان بنویسید و به نام و پسوند زیر ذخیره کنید gtk+_debug.vsprops

<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioPropertySheet
ProjectType="Visual C++"
Version="8.00"
Name="gtk+ debug"
>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="$(INCLUDE)"
RuntimeLibrary="3"
StructMemberAlignment="4"
AssemblerOutput="0"
DebugInformationFormat="4"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="art_lgpl_2.lib asprintf.lib atk-1.0.lib bz2.lib cairo.lib charset.lib croco-0.6.lib fontconfig.lib freetype.lib gdk_pixbuf-2.0.lib gdkglext-win32-1.0.lib gdk-win32-2.0.lib glade-2.0.lib glib-2.0.lib gmodule-2.0.lib gobject-2.0.lib gsf-1.lib gsf-win32-1.lib gthread-2.0.lib gtkglext-win32-1.0.lib gtk-win32-2.0.lib iconv.lib intl.lib jpeg.lib pango-1.0.lib pangocairo-1.0.lib pangoft2-1.0.lib pangowin32-1.0.lib png.lib popt.lib rsvg-2.lib tiff.lib xml2.lib z.lib"
AdditionalLibraryDirectories="$(LIB)"
GenerateDebugInformation="true"
AssemblyDebug="1"
GenerateMapFile="false"
SubSystem="1"
OptimizeForWindows98="1"
/>
</VisualStudioPropertySheet>
یک تکست فایل دیگر ایجاد کنید و کدهای زیر را در ان بنویسید و به نام و پسوند زیر ذخیره کنید
gtk+_release.vsprops

<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioPropertySheet
ProjectType="Visual C++"
Version="8.00"
Name="gtk+ release"
>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
FavorSizeOrSpeed="1"
AdditionalIncludeDirectories="$(INCLUDE)"
RuntimeLibrary="2"
StructMemberAlignment="4"
AssemblerOutput="0"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="art_lgpl_2.lib asprintf.lib atk-1.0.lib bz2.lib cairo.lib charset.lib croco-0.6.lib fontconfig.lib freetype.lib gdk_pixbuf-2.0.lib gdkglext-win32-1.0.lib gdk-win32-2.0.lib glade-2.0.lib glib-2.0.lib gmodule-2.0.lib gobject-2.0.lib gsf-1.lib gsf-win32-1.lib gthread-2.0.lib gtkglext-win32-1.0.lib gtk-win32-2.0.lib iconv.lib intl.lib jpeg.lib pango-1.0.lib pangocairo-1.0.lib pangoft2-1.0.lib pangowin32-1.0.lib png.lib popt.lib rsvg-2.lib tiff.lib xml2.lib z.lib"
AdditionalLibraryDirectories="$(LIB)"
GenerateDebugInformation="false"
AssemblyDebug="0"
GenerateMapFile="false"
SubSystem="2"
OptimizeForWindows98="1"
/>
</VisualStudioPropertySheet>

حال در vc یک پروژه تحت کنسول ایجاد کنید و در مسیر زیر این دو فایلی که ساختید به پروژه اضافه کنید
View -> Other Windows -> Property Manager
تمام شد همین!!
حالا کدها زیر را همیشه قبل از ایجاد هر برنامه به پروژه خود اضافه کنید

/* Windows Specific Code */
#ifdef G_OS_WIN32
#include <windows.h>
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
)
{
return main (__argc, __argv);
}
#endif

برای نمونه این هم یه برنامه:


#include <gtk/gtk.h>

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

static gboolean delete_event( GtkWidget *widget,
GdkEvent *event,
gpointer data )
{
g_print ("delete event occurred\n");

return FALSE;
}

static 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);

g_signal_connect (G_OBJECT (window), "delete_event",
G_CALLBACK (delete_event), NULL);

g_signal_connect (G_OBJECT (window), "destroy",
G_CALLBACK (destroy), NULL);

gtk_container_set_border_width (GTK_CONTAINER (window), 10);

button = gtk_button_new_with_label ("Hello World");

g_signal_connect (G_OBJECT (button), "clicked",
G_CALLBACK (hello), NULL);

gtk_container_add (GTK_CONTAINER (window), button);

gtk_widget_show (button);

gtk_widget_show (window);

gtk_main ();

return 0;
}

/* Windows Specific Code */
#ifdef G_OS_WIN32
#include <windows.h>
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
)
{
return main (__argc, __argv);
}
#endif
از این به بعد شما می تونید یک برنامه بنویسید و در دو محیط ویندوز و لینوکس استفاده کنید فقط باید کد خودتون رو دوبار کامپایل کنید استفاده از gtk در ویندوز برای ایجاد پروژه های GUI تنها یک ضرر داره اون هم این هست که سرعتش نسبت به API های ویندوز کمتر هست

hamid206
پنج شنبه 07 تیر 1386, 16:55 عصر
ببخشید دوستان یه سوالی داشتم برنامه هایی که برای رابط گرافیکی از gtk استفاده می کنن دیگه برای اجرا تو ویستا مشکلی نباید داشته باشن درسته؟؟ من خودم ویستا ندارم گفتم دوستان یه امتحانی بکنن ببینن چی میشه

bigcowboy
یک شنبه 30 دی 1386, 00:18 صبح
دوستان میشه مراحل ساخت یه برنامه( نه در vs 2005 ) و کامپایلر و نحوه کامپایل رو توضیح بدید.
متشکرم.