[Kde-bindings] assemblygen-based Qyoto now working under MS Windows and Linux!

Steven Boswell II ulatekh at yahoo.com
Sat May 26 15:37:54 UTC 2012

For those of you playing along at home, Dimitar and I had an offline discussion about building Qyoto.  The end result was, he wasn't making a Release build when he thought he was, and although smokegen and smokeqt worked when built as Release, assemblygen didn't.

Usually, when something works as a debug build, but not as release, the compiler warns about the issues.  I decided to add "-Wall" to my compiler command line, and found two cases where control reached the end of non-void functions.  The enclosed patch fixes both issues.

And now...release builds of Qyoto are working for me, under both Windows and Linux!

Could someone with write access to smokegen and smokeqt please apply the patches I sent to the list on May 22, at 7:08pm my time?  We finally have a version of the assemblygen-based Qyoto that builds and works under MS Windows and Linux.

Steven Boswell

 From: Dimitar Dobrev <dpldobrev at yahoo.com>
To: Steven Boswell II <ulatekh at yahoo.com>; KDE bindings <kde-bindings at kde.org> 
Sent: Friday, May 25, 2012 9:48 AM
Subject: Re: HccQt: all libs release

Yes, this is exactly what I mean, I'm porting an existing project to Qt.
I really do not have the time for comments but I can give you a basic outline for Qyoto (contained in the qtcore Qyoto module) as follows:
1. SmokeInvocation.cs - contains the methods that invoke the corresponding invokers in the native Qyoto which in turn call the SMOKE methods;
2. SmokeMarshallers.cs - these are the managed methods called by native code;

2. methodcall.cpp, virtualcall.cpp - these are self-explanatory;
3. handlers.cpp - these are the type marshallers; each type you pass to and each type you get from unmanaged code passes its appropriate marshaller; you'll see the Qyoto_handlers field which indicated which marshaller (a function pointer) is used for a certain type; for example, marshall_basetype is used for classes;

4. callbacks.cpp - these set pointers pointing to the managed methods (defined in 2.,SmokeMarshallers.cs) to call from unmanaged code.
This is basically it, and as these are the most used methods, the bug is most likely there. Let me know if you need more assistance.

 From: Steven Boswell II <ulatekh at yahoo.com>
To: Dimitar Dobrev <dpldobrev at yahoo.com> 
Sent: Friday, May 25, 2012 5:11 PM
Subject: Re: HccQt: all libs release

Porting what?  Are you talking about porting an existing project to use Qyoto and Qt?

I'll have to learn the source code to Qyoto to have any luck debugging it.  I don't suppose you'll have time to add source-code comments to Qyoto to reflect what you've learned about it in the last several months?

Also, I've never been able to get any version of the assemblygen-based Qyoto to work under Linux, not even a debug build.  It crashes in the first call to QObject.Connect().
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-bindings/attachments/20120526/004f07fe/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: assemblygen-fixcrash.patch
Type: application/octet-stream
Size: 802 bytes
Desc: not available
URL: <http://mail.kde.org/pipermail/kde-bindings/attachments/20120526/004f07fe/attachment.obj>

More information about the Kde-bindings mailing list