RE: [LINUX] Shared Library Files, Qt, Eu, and open_dll()

new topic     » topic index » view thread      » older message » newer message

Can I see some code? You can send it to me personally if you like. Of 
course, I can't test it just yet, since I haven't re-installed Mandrake, but 
I'll take a look at it anyway.

>From: Travis Beaty <twbeaty at osage.net>
>Subject: [LINUX] Shared Library Files, Qt, Eu, and open_dll()
>
>
>Hello everyone!
>
>I am currently working on a window toolkit for Euphoria using Qt.  One of 
>the
>main sticking points in all of this is that the shared libraries for Qt 
>were
>written and compiled for C++, which creates a great deal of difficulty 
>since
>it is, of course, object oriented, and since gcc mangles all the function
>names.
>
>To get around this, I've been writing my own shared library for use with my
>toolkit.  The shared library that I am writing works with the C++ code, but
>provides C functions ... these functions are declared using extern "C", 
>which
>means that gcc will not mangle the function names.  (I've verified the fact
>that it *isn't* mangling them.)
>
>At any rate, I had the toolkit working well enough to successfully write
>Tutorial #1 in the Qt documentation using Euphoria.  I then decided to make
>an error window class, and place that into the library.  Once I did that,
>Euphoria could no longer open the shared library, and open_dll() returned a
>value of -1.
>
>Using two different makefiles, I've been able to toggle the library, 
>compiling
>the error window code into the .so file, and then clean making it with the
>other makefile, which leaves that code out.  When the error window code is
>left out, Euphoria opens the .so without a problem.  When it is included,
>Euphoria cannot open it.
>
>Since Euphoria's inability to open the shared library only occurs when that
>code is included, I suspect that the problem lies in my C++ code, or some
>quirk with Linux that I'm unfamiliar with.  I had also considered that
>perhaps that code was causing another library to be loaded which could be
>causing the problem; however, in both the "works" and "don't works" case, 
>I'm
>still linking to the same libraries, libqt.so and libqui.so.
>
>The only other two significant changes I can think of are:
>
>1.  The code for the base class for my error window (which is derived from
>QDialog), is being generated by the Qt tool uic.  [This is because I've
>designed it using the Qt-Designer.]  It also uses the moc tool, but this
>isn't significant, because moc is also run on some of the other header 
>files
>in the "works" version.
>
>2.  The suspect code is also the only code in the library (thus far) that
>makes use of Qt's signal/slot event handling system.
>
>Why either of these facts would be an issue with Euphoria not opening the
>shared library file escapes me.  Nothing has changed in the linking 
>process,
>and none of the options that I've used to build the library (using gcc) 
>have
>changed.  And finally, gcc is not issuing any errors or warnings when 
>making
>the .so file.  I've even tried running ldconfig -n ., without effect.
>
>Any thoughts?
>
>
>Have a good morning/day/afternoon/evening/night,
>
>Travis W. Beaty
>Osage, Iowa.
>

new topic     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu