[Kde-bindings] Qyoto: Linux build - fixed QX11EmbedWidget/QX11EmbedContainer

Dimitar Dobrev dpldobrev at yahoo.com
Tue Jan 15 11:36:05 UTC 2013


    Hi,

    I think there is something wrong with your qyoto-qtcore-native. It is an old version and this is why it passes the no longer existing Qyoto namespace. Please try cleaning assemblygen (of which qyoto-qtcore-native is part) and rebuilding.

    Dimitar



________________________________
 From: Carlos Machado <metator.pt at gmail.com>
To: Dimitar Dobrev <dpldobrev at yahoo.com> 
Sent: Tuesday, January 15, 2013 5:18 AM
Subject: Re: [Kde-bindings] Qyoto: Linux build - fixed QX11EmbedWidget/QX11EmbedContainer
 

Hi,

I've compiled smokegen, smokeqt and assemblygen successfully on Ubuntu 12.10 32 bits. Thanks for the work.
Now I'm getting runtime exceptions on very simple examples like this one:

using System;
using QtGui;

namespace qttest {
    class Program {
        
        [STAThread]
        static int Main(String[] args) {
            QApplication app = new QApplication(args);

            QMainWindow win = new QMainWindow();
            win.ShowEvent += (sender, e) =>  {
                Console.WriteLine("Main Window showned.");
            };
            win.Resize(640, 480);
            win.Show();
            return QApplication.Exec();
        }
    }
}

It throws a NRE when calling win.Show() with the following message:

System.NullReferenceException: Object reference not set to an instance of an object
  at QtCore.SmokeMarshallers.CreateInstance (System.String className, IntPtr smokeObjectPtr) [0x00000] in <filename unknown>:0
  at QtCore.SmokeMarshallers.CreateInstance (System.String className, IntPtr smokeObjectPtr) [0x00000] in <filename unknown>:0
  at (wrapper native-to-managed) QtCore.SmokeMarshallers:CreateInstance (intptr,intptr)
  at (wrapper managed-to-native) QtCore.SmokeInvocation:CallSmokeMethod (intptr,int,intptr,intptr,int,intptr)
  at QtCore.SmokeInvocation.Invoke (System.String mungedName, System.String signature, System.Type returnType, Boolean refArgs, System.Object[] args) [0x00000] in <filename unknown>:0
  at QtGui.QWidget.Show () [0x00000] in <filename unknown>:0
  at qttest.Program.Main (System.String[] args) [0x00042]

There's also another message printed to output:

CreateInstance() ** Missing class ** Qyoto+QEvent, qyoto-qtcore

I went through the SmokeMarshallers code but i couldn't figure out where the namespace Qyoto comes from...

Regards,

Mach


2013/1/14 Dimitar Dobrev <dpldobrev at yahoo.com>

    
>
>    Hi all,
>
>
>    With Steven Boswell's help, I've fixed the QX11EmbedWidget/QX11EmbedContainer problem when building Qyoto on Linux. Now the classes are no longer excluded and build with no errors.
>    Steven, I've fixed this by checking for nested types when generating signals. I've taken a look at your patch and it seems OK. But there are many changes and I wanted to think on it a little longer, to see if it's possible to exclude a class at a single central place. About this other fix I've applied, I had to do it anyway because these two classes were only blacklisted because of it, and there may be other similar in future Qt versions.
>
>
>    Regards,
>    Dimitar Dobrev
>    
>
>_______________________________________________
>Kde-bindings mailing list
>Kde-bindings at kde.org
>https://mail.kde.org/mailman/listinfo/kde-bindings
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-bindings/attachments/20130115/cbae0791/attachment-0001.html>


More information about the Kde-bindings mailing list