[原创]anjuta初体验
-
- 帖子: 16
- 注册时间: 2007-12-09 9:30
[原创]anjuta初体验
终于开始了在linux下编程的学习,看了不少贴子,搞明白了。要用anjuta搭建个GUI IDE环境开始我的C++学习之旅。
安装anjuta的第一个问题就是......没找到libgnomemm2.0-dev。
(这是我在ubuntu中文中用来学习预留的贴子,以后慢慢增加内容。请匆跟贴,谢谢。)
安装anjuta的第一个问题就是......没找到libgnomemm2.0-dev。
(这是我在ubuntu中文中用来学习预留的贴子,以后慢慢增加内容。请匆跟贴,谢谢。)
- 附件
-
- linuxAPI.gz
- (225.91 KiB) 已下载 990 次
上次由 ubfaner 在 2007-12-15 16:27,总共编辑 3 次。
- mikeandmore
- 帖子: 109
- 注册时间: 2005-10-13 18:29
-
- 帖子: 16
- 注册时间: 2007-12-09 9:30
-
- 帖子: 16
- 注册时间: 2007-12-09 9:30
- mikeandmore
- 帖子: 109
- 注册时间: 2005-10-13 18:29
-
- 帖子: 16
- 注册时间: 2007-12-09 9:30
楼上的朋友有没有devhelp的中文资料?
我再发一些C++的,标准库教材。(大于2M,还得想办法分割成小文件,在linux下好像应该有办法的,1、可以使用dd if=a of=a.1 bs=512 count=4 dd if=a of=a.2 bs=512 skip=4
2、合并 cat a.1 a.2>a)
当我用GTKmm生成程序后,编译却没有通过,提示没有找到相关的头文件。可能是安装完anjuta后没能设好linux的环境变量,这个问题没有解决。但在重新启动系统后,问题不存在了。
我再发一些C++的,标准库教材。(大于2M,还得想办法分割成小文件,在linux下好像应该有办法的,1、可以使用dd if=a of=a.1 bs=512 count=4 dd if=a of=a.2 bs=512 skip=4
2、合并 cat a.1 a.2>a)
当我用GTKmm生成程序后,编译却没有通过,提示没有找到相关的头文件。可能是安装完anjuta后没能设好linux的环境变量,这个问题没有解决。但在重新启动系统后,问题不存在了。
- 附件
-
- c++标准程序库.part1.rar
- (2 MiB) 已下载 180 次
-
- c++标准程序库.part2.rar
- (1.54 MiB) 已下载 1501 次
上次由 ubfaner 在 2007-12-19 0:04,总共编辑 1 次。
-
- 帖子: 16
- 注册时间: 2007-12-09 9:30
经过n小时的学习终于完成了我第一个程序。(当然是经典的Hello!)
分两个文件
app.h和main.cc
/*********************************************
****************app.h***********************
*********************************************/
#include <libglademm/xml.h>
#include <gtkmm.h>
#include <iostream>
#ifdef ENABLE_NLS
# include <libintl.h>
#endif
#define GLADE_FILE "gtkmmapp.glade"
class Object
{
public:
int m_argc;
char* p_argv[];
public:
Object()
{}
Object(int m_a,char *p_a[])
{
m_argc=m_a;
*p_argv=*p_a;
}
~Object()
{
}
};
class Form : public Object
{
private:
Glib::RefPtr<Gnome::Glade::Xml> refXml;
Gtk::Window* main_win;// = 0;
public:
Form()
{
init();
}
int init()
{
Gtk::Main kit(&m_argc,(char***)p_argv);
try
{
refXml = Gnome::Glade::Xml::create(GLADE_FILE);
}
catch(const Gnome::Glade::XmlError& ex)
{
std::cerr << ex.what() << std::endl;
return 1;
}
refXml->get_widget("main_window", main_win);
if (main_win)
{
Gtk::Label label("Hello World!",Gtk::ALIGN_CENTER,Gtk::ALIGN_CENTER,false);
main_win->add(label);
main_win->show_all_children();
kit.run(*main_win);
}
}
~Form()
{
}
};
class Start
{
Start();
~Start()
{
}
public:
static void run(Object *myobject)
{
myobject=new Object();
}
};
/*********************************************
***************main.cc**********************
*********************************************/
#include "app.h"
//class Application
//{
/*static*/
int main(int argc, char *argv[])
{
Start::run(new Form());
return 0;
}
//};
分两个文件
app.h和main.cc
/*********************************************
****************app.h***********************
*********************************************/
#include <libglademm/xml.h>
#include <gtkmm.h>
#include <iostream>
#ifdef ENABLE_NLS
# include <libintl.h>
#endif
#define GLADE_FILE "gtkmmapp.glade"
class Object
{
public:
int m_argc;
char* p_argv[];
public:
Object()
{}
Object(int m_a,char *p_a[])
{
m_argc=m_a;
*p_argv=*p_a;
}
~Object()
{
}
};
class Form : public Object
{
private:
Glib::RefPtr<Gnome::Glade::Xml> refXml;
Gtk::Window* main_win;// = 0;
public:
Form()
{
init();
}
int init()
{
Gtk::Main kit(&m_argc,(char***)p_argv);
try
{
refXml = Gnome::Glade::Xml::create(GLADE_FILE);
}
catch(const Gnome::Glade::XmlError& ex)
{
std::cerr << ex.what() << std::endl;
return 1;
}
refXml->get_widget("main_window", main_win);
if (main_win)
{
Gtk::Label label("Hello World!",Gtk::ALIGN_CENTER,Gtk::ALIGN_CENTER,false);
main_win->add(label);
main_win->show_all_children();
kit.run(*main_win);
}
}
~Form()
{
}
};
class Start
{
Start();
~Start()
{
}
public:
static void run(Object *myobject)
{
myobject=new Object();
}
};
/*********************************************
***************main.cc**********************
*********************************************/
#include "app.h"
//class Application
//{
/*static*/
int main(int argc, char *argv[])
{
Start::run(new Form());
return 0;
}
//};
上次由 ubfaner 在 2007-12-20 11:35,总共编辑 1 次。
-
- 帖子: 16
- 注册时间: 2007-12-09 9:30
老是问题连连啊,anjuta在连接工程的时候又出现问题了。编译可以通过,就是不能生成工程。提示aclocal某些.m4文件有问题。花了一天时间也没有解决。上面用C#的形式改写了gtkmm程序(也没达到满意,比如使用静态入口点就不行),下面想改成类似MFC的。反复试验,发现与windows下的C++有不太一样的地方。比如程序执行时,win32程序总是先执行外部的静态的对象,然后才到Winmain入口点的。大家知道,MFC程序有一个全局唯一对象theapp。现在还没有改成功。明天再说吧。
(anjuta在连接工程的时候又出现问题了)这个问题己解决。
方法1:anjita->Project->AddSource File...-><yourfile>将yourfile手工加入工程。
方法2:打开 工程目录/src/Makefile.am在“ex_SOURCES =”添加要加入的文件名。
(anjuta在连接工程的时候又出现问题了)这个问题己解决。
方法1:anjita->Project->AddSource File...-><yourfile>将yourfile手工加入工程。
方法2:打开 工程目录/src/Makefile.am在“ex_SOURCES =”添加要加入的文件名。
-
- 帖子: 43
- 注册时间: 2007-11-22 19:05
找到这边,想问个问题,安装anjuta时执行./configure出错:
我是GNOME的桌面怎么会没有GTK呢,疑惑中。。。
代码: 全选
...
...
checking for GTK... configure: error: Package requirements (gtk+-2.0 >= 2.8.0) were not met:
No package 'gtk+-2.0' found
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
Alternatively, you may set the environment variables GTK_CFLAGS
and GTK_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
-
- 帖子: 16
- 注册时间: 2007-12-09 9:30
- mikeandmore
- 帖子: 109
- 注册时间: 2005-10-13 18:29
学gtkmm。。。用singletonubfaner 写了:老是问题连连啊,anjuta在连接工程的时候又出现问题了。编译可以通过,就是不能生成工程。提示aclocal某些.m4文件有问题。花了一天时间也没有解决。上面用C#的形式改写了gtkmm程序(也没达到满意,比如使用静态入口点就不行),下面想改成类似MFC的。反复试验,发现与windows下的C++有不太一样的地方。比如程序执行时,win32程序总是先执行外部的静态的对象,然后才到Winmain入口点的。大家知道,MFC程序有一个全局唯一对象theapp。现在还没有改成功。明天再说吧。
(anjuta在连接工程的时候又出现问题了)这个问题己解决。
方法1:anjita->Project->AddSource File...-><yourfile>将yourfile手工加入工程。
方法2:打开 工程目录/src/Makefile.am在“ex_SOURCES =”添加要加入的文件名。
。。。。
-
- 帖子: 16
- 注册时间: 2007-12-09 9:30
是啊,c++并不是纯种的面向对象的语言。实现单向模式很容易。问题是我并没有设计模式的概念。老实说,我只是个“语法大约都懂了,语意大约都不懂”的初学者。不怕大家笑话。我学习编程是想看懂linux的源代码。因为我基本上看不懂别人的源码,所以就学吧。一本数据结构看了两个月了还没看完。后来就到乌班图系统下学来了。见到gtkmm觉得很好,嗯,就把在windows下的学的一点经验先搬过来吧。
上面说要改成MFC的样子。那要完成如下工作:
1、建立一个类树。Object,Sign,GuiApp,GWindow,GDocument,GView.
2、简单的仿消息映射的信号宏。
3、把main()封装起来。(这个其实和第一项工作是一起的)
上面说要改成MFC的样子。那要完成如下工作:
1、建立一个类树。Object,Sign,GuiApp,GWindow,GDocument,GView.
2、简单的仿消息映射的信号宏。
3、把main()封装起来。(这个其实和第一项工作是一起的)