关于gtk包装类放入动态链接库的问题

软件和网站开发以及相关技术探讨
回复
skycn
帖子: 30
注册时间: 2006-06-05 23:27

关于gtk包装类放入动态链接库的问题

#1

帖子 skycn » 2007-08-20 21:06

源代码如下:

代码: 全选

//foo.cpp 一个gtk窗口的包装类

#include <stdio.h>
#include "myclass.h"

#include <gtk/gtk.h>
#include <glib.h>

class foo : public myclass {
	private:
		GtkWidget* window;
		GtkWidget* button;

	public:
		virtual ~foo() {
			printf("destruction of foo!\n");
		}
		
		static gint destroyapp (GtkWidget *widget, gpointer gdata){
			g_print ("Quitting...\n");
			gtk_main_quit();
			return (FALSE);
		}

		static void button_clicked(GtkWidget *widget, gpointer gdata){
			g_print("Button was clicked.\n");
		}

		foo(int argc,char* argv[]){
			gtk_init(&argc,&argv);
		}

		virtual void fun1() {
			printf("fun1 in the foo!\n");
			window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
			button=gtk_button_new_with_label("hello");
			gtk_signal_connect(GTK_OBJECT(window),"delete_event",GTK_SIGNAL_FUNC(&foo::destroyapp),NULL);
			gtk_signal_connect(GTK_OBJECT(button),"clicked",GTK_SIGNAL_FUNC(&foo::button_clicked),NULL);
			gtk_container_add(GTK_CONTAINER(window),button);
			gtk_container_border_width (GTK_CONTAINER (window), 15);
			gtk_widget_show(button);
			gtk_widget_show(window);
			gtk_main();
		}
};

extern "C" {

	foo* maker(){
		return new foo(NULL,NULL);
	}
}
我把该类编译成一个动态链接库:

代码: 全选

g++ -Wall -fPIC -g -c foo.cpp  `gtk-config --cflags` `gtk-config --libs`
ld -shared foo.o -o libsoso.so
但是不能完成编译,我估计是编译出了问题,但不知道是哪里出了问题,请高人指教一下,谢谢谢谢
回复