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

Steven Boswell II ulatekh at yahoo.com
Sun May 27 15:16:09 UTC 2012


Dimitar, I _did_ read your e-mail -- that's how I knew about the three problems you mentioned.  I just thought there'd be a chance that my patch fixed them, since the problems you mentioned were sort of weird and inexplicable, and my patch fixed other problems that were weird and inexplicable.

And yes, you had mentioned the "-mstackrealign" fix, but at the time, I hadn't realized that you didn't patch the cmake files to fix it.  As you can see, the fix wasn't very difficult.  (Maybe it's because I was previously traumatized by autogen, but I found cmake to be easy to deal with. :-)

In any case, I'm glad to have a working cross-platform assemblygen-based Qyoto, and now I can finally do what I've wanted to do all along: write Qt apps using C#.  I also intend to learn the source code to Qyoto (which I will continue doing today), not only to become more able to help on this project, but to learn more about advanced C# programming.

Re: getting Qyoto documented, do you perhaps have any recommendations for the order in which I should read the source files?  Something that would give me a bottom-to-top view of how things work?  That way, when I get to the next source file, I've learned the basics of what I need to know in order to understand it.  Right now, I'm just reading them in order, starting with qyoto-qtcore, then going into its native directory, and bouncing back and forth a little.

Arno, re: the patch not working with MSVC: I was unaware of that.  I thought it was needed generally under MS Windows.  I don't have MSVC, so I wouldn't be able to test it anyway.  However, adjusting my recent patch to cope with such a thing would be a snap, so I'm not too worried.

Steven Boswell


________________________________
 From: Dimitar Dobrev <dpldobrev at yahoo.com>
To: Steven Boswell II <ulatekh at yahoo.com>; KDE bindings for other programming languages <kde-bindings at kde.org> 
Sent: Saturday, May 26, 2012 12:50 PM
Subject: Re: [Kde-bindings] assemblygen-based Qyoto now working under MS Windows and Linux!
 

I've already written about 2 of the problems here - http://lists.kde.org/?l=kde-bindings&m=133691383629692&w=2, and about the 3rd one here - http://lists.kde.org/?l=kde-bindings&m=133693036701950&w=2. Please consider browsing the list archive for at least the last month. I know it's not fun (and even easy, because of the way the list messes up Yahoo mails) to read but I've been sending there everything I've found out about Qyoto so that other people would not waste time. I believe I've mentioned the "-mstackrealign" note has also been sent by me to the list albeit quite some time ago.


I haven't been learning programming from books so I cannot give you a recommendation. However, I think I've grasped most of the Qyoto structure and I'd gladly answer any questions you might have. The C# part is not very hard anyway. The most "unusual" used class is, I believe, GCHandle - it allows the sending (through its method Alloc) of a pointer to a managed object to unmanaged code. The only condition is that the corresponding argument on the unmanaged side is of type void*. I've already written to you about the basic methods in qtcore-native so together with this note they may help you get started. I'd be happy to help, even more so considering that you'd probably make some ordered notes which we could then publish somewhere at kde-bindings.org as technical documentation.



________________________________
 From: Steven Boswell II <ulatekh at yahoo.com>
To: KDE bindings for other programming languages <kde-bindings at kde.org> 
Sent: Saturday, May 26, 2012 10:03 PM
Subject: Re: [Kde-bindings] assemblygen-based Qyoto now working under MS Windows and Linux!
 

Glad to be of service. :-)

Let us know if any of the three outstanding bugs you reported earlier are fixed by this change, or if those still have to be tracked down.

Do you have any recommendations for books on the sort of C# programming I'm going to need to understand in order to become a better Qyoto developer?  So far, I'm browsing the "C# Interoperability" on MSDN, but I figure someone has written a book on this sort of unmanaged/advanced C# programming.  Now that I can get Qyoto to work for me, learning its implementation is a new priority for me.

Thanks for checking up with Richard.

Steven Boswell


________________________________
 From: Dimitar Dobrev <dpldobrev at yahoo.com>
To: Steven Boswell II <ulatekh at yahoo.com>; KDE bindings for other programming languages <kde-bindings at kde.org> 
Sent: Saturday, May 26, 2012 11:10 AM
Subject: Re: [Kde-bindings] assemblygen-based Qyoto now working under MS Windows and Linux!
 

Great work, Steven, and in a very short time! It works for me as well and I've just pushed it.
About the "-mstackrealign" patches on SMOKE, I asked Richard to push them and he agreed but they are still not there. I'll try now to check on IRC what's going on.



________________________________
 From: Steven Boswell II <ulatekh at yahoo.com>
To: KDE bindings for other programming languages <kde-bindings at kde.org> 
Sent: Saturday, May 26, 2012 7:51 PM
Subject: Re: [Kde-bindings] assemblygen-based Qyoto now working under MS Windows and Linux!
 

Here's one more patch for assemblygen...while building it on a different Linux machine, I encountered a problem I hadn't seen before.  I traced it to a missing dependency declaration.  The enclosed patch fixes it.

Steven Boswell


________________________________
 From: Steven Boswell II <ulatekh at yahoo.com>
To: KDE bindings <kde-bindings at kde.org> 
Sent: Saturday, May 26, 2012 8:37 AM
Subject: [Kde-bindings] assemblygen-based Qyoto now working under MS Windows and Linux!
 

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().




















_______________________________________________
Kde-bindings mailing list
Kde-bindings at kde.org
https://mail.kde.org/mailman/listinfo/kde-bindings



_______________________________________________
Kde-bindings mailing list
Kde-bindings at kde.org
https://mail.kde.org/mailman/listinfo/kde-bindings





_______________________________________________
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/20120527/41c67cad/attachment-0001.html>


More information about the Kde-bindings mailing list