[Kde-bindings] Qt3 Kimono version - got it compiled

Richard Dale Richard_Dale at tipitina.demon.co.uk
Fri Nov 25 19:50:42 UTC 2005


On Friday 25 November 2005 18:48, Arno Rehn wrote:
> Am Freitag, 25. November 2005 19:29 schrieb Richard Dale:
> > Good news! That was fast work, maybe we ought to turn it into a proper
> > project?
> >
> > I can't see anything special about SetCaption():
> >
> > baldhead duke 1071% grep SetCaption *.cs
> > QDockWindow.cs:         public new void SetCaption(string s) {
> > QDockWindow.cs:                 ProxyQDockWindow().SetCaption(s);
> > QWidget.cs:             public virtual void SetCaption(string arg1) {
> > QWidget.cs:                     ProxyQWidget().SetCaption(arg1);
> >
> > Is it the only method that is passed an argument in your example?
> >
> > It is certainly in the Smoke library. I put debugging on this QtRuby
> > example to trace the call, and it looks fine to me:
>
> Ok, the sources are at the end of the message, but currently I have another
> problem. If I run anything with the Qt-bindings, I get this:
>
>
> In AddGetSmokeObject 0x40abe778
> In AddSetSmokeObject 0x40abe818
> In AddMapPointer 0x40abe8b8
> In AddUnmapPointer 0x40abe958
> In AddGetPointerObject 0x40abe9f8
> Invoke() MethodName: NewQApplication Type: Qt.QApplication, Qt,
> Version=0.0.0.0, Culture=neutral, PublicKeyToken=null ArgCount: 1
>
> =================================================================
> Got a SIGSEGV while executing native code. This usually indicates
> a fatal error in the mono runtime or one of the native libraries
> used by your application.
> =================================================================
>
> Stacktrace:
>
> in <0x4> (wrapper managed-to-native) Qt.SmokeInvocation:FindMethodId
> (string,string)
> in <0xfffffe8b> (wrapper managed-to-native) Qt.SmokeInvocation:FindMethodId
> (string,string)
> in <0x43> Qt.SmokeInvocation:FindMethod (string)
> in <0x33b> Qt.SmokeInvocation:Invoke
> (System.Runtime.Remoting.Messaging.IMessage)
> in <0x2e5> System.Runtime.Remoting.Proxies.RealProxy:PrivateInvoke
> (System.Runtime.Remoting.Proxies.RealProxy,System.Runtime.Remoting.Messagin
>g.IMessage,System.Exception&,object[]&) in <0xc73bd7df> (wrapper
> runtime-invoke)
> System.Object:runtime_invoke_object_RealProxy_IMessage_Exception&_object[]&
> (object,intptr,intptr,intptr)
> in <0x4> (wrapper remoting-invoke) Qt.QApplication:NewQApplication
> (string[]) in <0xffffffc1> (wrapper remoting-invoke)
> Qt.QApplication:NewQApplication (string[])
> in <0xffffff31> (wrapper remoting-invoke-with-check)
> Qt.QApplication:NewQApplication (string[])
> in <0x19> Qt.QApplication:NewQApplication (string[])
> in <0x23> Qt.QApplication:.ctor (string[])
> in <0xffffffdd> (wrapper remoting-invoke-with-check) Qt.QApplication:.ctor
> (string[])
> in <0x25> MainForm:Main (string[])
> in <0xc7678b97> (wrapper runtime-invoke)
> System.Object:runtime_invoke_void_string[] (object,intptr,intptr,intptr)
>
> Native stacktrace:
>
>         mono(mono_handle_native_sigsegv+0xba) [0x81471da]
>         mono [0x81354cf]
>         [0xffffe440]
>         /opt/kde3/lib/libqyoto.so(_ZN5Smoke10findMethodEPKcS1_+0x14)
> [0x40d8d982]
>         /opt/kde3/lib/libqyoto.so(FindMethodId+0x1a) [0x40d8d1d6]
>         [0x424e0a89]
>         [0x424e08d4]
>         [0x424db2ac]
>         [0x40d782ce]
>         [0x40d77bd5]
>         mono [0x8135380]
>         mono(mono_runtime_invoke+0x27) [0x80d42b7]
>         mono(mono_remoting_invoke+0x4e) [0x80d6d4e]
>         mono [0x80a97a7]
>         [0x40d779ea]
>         [0x40d77972]
>         [0x40d7786a]
>         [0x40d704e4]
>         [0x40abd22a]
>         [0x40abd1de]
>         [0x40abc813]
>         mono [0x8135380]
>         mono(mono_runtime_invoke+0x27) [0x80d42b7]
>         mono(mono_runtime_exec_main+0x5c) [0x80d513c]
>         mono(mono_runtime_run_main+0x171) [0x80d4d61]
>         mono(strftime+0x1b52) [0x805cb72]
>         mono(mono_main+0x785) [0x805d485]
>         mono(__fxstat64+0x12b) [0x805bf3b]
>         /lib/tls/libc.so.6(__libc_start_main+0xd0) [0x4013fea0]
>         mono(sinh+0x41) [0x805be91]
>
>
> I don't know why this happens, I really didn't do ANYTHING on my system, I
> just started the program again and this was the result.
Yes, it won't do anything because I hadn't got as far as the code to invoke a 
method. I'll have a look at what is going wrong with the method look up. I 
also can't remember how far I got with marshalling C# args to C++ ones and 
putting them on the Smoke::Stack.

>
> but now my sources:
>
> using System;
> using Qt;
>
> class MainForm : QDialog
> {
> 	public static void Main (string[] args)
> 	{
> 		Qt.QApplication qa = new Qt.QApplication(args);
> 		MainForm mf = new MainForm();
> 		mf.Show();
> 		qa.SetMainWidget(mf);
> 		qa.Exec();
> 	}
>
> 	public MainForm()
> 	{
> 		this.Show();
> 		QVBoxLayout qgrid = new QVBoxLayout(this);
> 		qgrid.SetAutoAdd(true);
> 		QTextEdit te = new QTextEdit(this);
> 		te.Show();
> 		QPushButton button = new QPushButton(this);
> 		button.SetCaption("Hello World!");
> 		button.Show();
> 	}
> }
>
>
> and the problem also occurs with some constructors with more than 1
> argument.
Well I would expect those constructors to be overloaded. I've forgotten how 
far I got - it is failing when it looks for the very first method looking for 
The Qt.QApplication constructor. I'm afraid I'm not on the internet at 
weekends at the moment, so I'll have a look at report back on Monday. It 
needs to at least get as far as calling FindMethodId() in qt3qyoto.cpp.

-- Richard



More information about the Kde-bindings mailing list