Menu

Error compiling wxEuphoria

Jason Gade
2007-08-02
2013-04-07
  • Jason Gade

    Jason Gade - 2007-08-02

    I'll work through this, but I thought that I would post it anyway. Any hints will be helpful though.

    Compiling wxEuphoria on Xubuntu 7.0.4 x86, output from make:

    g++ -c -o wxeu.o -D__WXGTK__     -I.  -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread  wxeu.cpp
    wxeu.cpp: In function ‘wxString get_string(object)’:
    wxeu.cpp:68: error: call of overloaded ‘wxString(char*&)’ is ambiguous
    /usr/include/wx-2.8/wx/string.h:722: note: candidates are: wxString::wxString(const wxWCharBuffer&) <near match>
    /usr/include/wx-2.8/wx/string.h:692: note:                 wxString::wxString(wxChar, size_t) <near match>
    /usr/include/wx-2.8/wx/string.h:690: note:                 wxString::wxString(const wxString&) <near match>
    /usr/include/wx-2.8/wx/string.h:682: note:                 wxString::wxString(int) <near match>
    wxeu.cpp: At global scope:
    wxeu.cpp:90: warning: ‘EuEventTypes’ initialized and declared ‘extern’
    make: *** [wxeu.o] Error 1

    I did not build wxWidgets from source. Using synaptic, I installed every package available using wxWidgets 2.8. Strangely, I also had to install g++.

    Before attempting compile, I noticed using ldconfig -v | grep wx that all of the libraries contain the string "gtk2u" whereas ldd libwxeu.so shows me that it requires libs containing the string "gtk2d".

    All of the required libs seem to be present, just under a different link name. I suppose that I could just make a whole new slew of soft links and test from there.

    Matt, do you know why there is no constructor for a char *? Here's the offending lines:

    wxString get_string( object seq )
    {
            char * str;

            if( !IS_SEQUENCE(seq) )
                    RTFatal("expected a sequence");

            str = new char[SEQ_PTR(seq)->length + 1];
            MakeCString( str, seq );
            wxString s( str ); // this is line 68
            delete[] str;
            return s;
    }

     
    • Matt Lewis

      Matt Lewis - 2007-08-02

      What version of the source did you use?  The released code won't work with the unicode libraries that you get from synaptic.  You need to use the latest from svn, and make sure you run ./configure before making to get the correct linking and flags.

      Alternatively, you could also try the version I built: http://wxeuphoria.sf.net/libwxeu.so.tar.gz

       
      • Jason Gade

        Jason Gade - 2007-08-02

        Yeah, I'm using the released version. I'll work on getting the latest svn in the next few days (once I figure out how to use svn well).

        I'll also try the above link, thanks.

        Is there a way to set up the configure script so the library can build under either unicode or not? Heh. I'm at the part where I know the tools exist but I don't really know how to use them...

         
        • Matt Lewis

          Matt Lewis - 2007-08-02

          Actually, that's what the configure script is supposed to do.  It uses the wx-config script that gets installed with wxWidgets to tell it what flags the compiler needs and what libraries it should link to.

          It's possible that you might have multiple wx-configs (in /usr/bin and /usr/local/bin) if you installed wx using your package manager and also built it yourself.  That can cause problems.  Although it's not recommended, you could hand-edit the makefile.gcc file that configure creates to link with different libraries.

          svn is actually really simple.  Just type this in (and replace [path] with the path where you want to code to go):

          $ svn co https://wxeuphoria.svn.sourceforge.net/svnroot/wxeuphoria/wxeu/trunk [path]

          I'd also be really interested to hear if the other binary works.  I'd like to be able to release an Ubuntu binary, but if it only works on my system....

           
      • Jason Gade

        Jason Gade - 2007-08-03

        Okay, your binary seems to work with the couple demos that I tried (controls_demo.exw and hello_world.exw).

        I had to copy libwxeu.so to /usr/lib and then sudo ldconfig (I may not have needed sudo...) That worked.

        For some reason it doesn't seem to like /usr/local/lib. Without figuring out some kind of configuration change for ldconfig.

        The man page doesn't seem to be much help.

        I'll try subversion here pretty soon...

         
        • Matt Lewis

          Matt Lewis - 2007-08-03

          I believe that on Linux, to get /usr/local/lib to work, you need to specify that on the command line:

          $ sudo ldconfig /usr/local/lib

          On FreeBSD, this doesn't seem to be necessary.  Also, yes, you should have to use sudo with ldconfig.

           
    • Jason Gade

      Jason Gade - 2007-08-02

      >>Actually, that's what the configure script is supposed to do. It uses the wx-config script that gets installed with wxWidgets to tell it what flags the compiler needs and what libraries it should link to.
      Yeah, I have the tendency to talk first and then look at the file later. I just now snuck a peek at it (although my Linux stuff is at home).

      >>It's possible that you might have multiple wx-configs (in /usr/bin and /usr/local/bin) if you installed wx using your package manager and also built it yourself. That can cause problems. Although it's not recommended, you could hand-edit the makefile.gcc file that configure creates to link with different libraries.

      I haven't built wxWidgets from source yet -- I've just installed it from the package manager. I'm trying to avoid that really.

      I'd like to help make it plug-and-play. That is so the user only needs to take a few steps to install wxEuphoria library and get coding.

      >>I'd also be really interested to hear if the other binary works. I'd like to be able to release an Ubuntu binary, but if it only works on my system....

      Okay, I'll try that out tonight and let you know.

       
    • Jason Gade

      Jason Gade - 2007-08-03

      >>I believe that on Linux, to get /usr/local/lib to work, you need to specify that on the command line:

      $ sudo ldconfig /usr/local/lib

      On FreeBSD, this doesn't seem to be necessary. Also, yes, you should have to use sudo with ldconfig.

      No, because I tried that. Or maybe it didn't work right because I was doing:

      $ sudo ldconfig /usr/local/lib/libwxeu.so

      Maybe it chokes on the whole filename instead of just a directory name?

      Are there any specific tests that need to be done with this binary? If not, then some on Euforum should be happy...
      http://www.openeuphoria.org/cgi-bin/esearch.exu?fromMonth=5&fromYear=C&toMonth=8&toYear=C&postedBy=&keywords=ubuntu+wxeuphoria

       
      • Matt Lewis

        Matt Lewis - 2007-08-03

        > Maybe it chokes on the whole filename instead of just a directory name?

        Yeah, according to the man page, ldconfig is meant to be used on directories.

        > Are there any specific tests that need to be done with this binary?
        > If not, then some on Euforum should be happy...

        I don't know.  For some reason, Jerry can't get it to work on his system, though apparently we've both been able to, so that points to something on his system, rather than the binary itself, which is sorta good.

         

Log in to post a comment.