Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Little problem with compiling Qt4 app (Ambigious symbol)
Forum Update on Monday, May 27th 2025

Little problem with compiling Qt4 app (Ambigious symbol)

Scheduled Pinned Locked Moved General and Desktop
9 Posts 4 Posters 7.7k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • P Offline
    P Offline
    ProgrammerAtHeart3344
    wrote on 21 Oct 2010, 21:48 last edited by
    #1

    @1>.\GeneratedFiles\Debug\moc_cirrationalengine.cpp(20) : error C2872: 'uint' : ambiguous symbol
    1> could be 'c:\qt\4.7.0\include\qtcore../../src/corelib/global/qglobal.h(899) : unsigned int uint'
    1> or 'g:\users\eggman\downloads\ogresdk_vc9_v1-7-1\include\ogre\OgrePrerequisites.h(108) : Ogre::uint'@

    As you can see from that, there's a problem when i compile the app with this, here is my header file that i believe causes this error:

    @

    #ifndef MATERIAL_EDITOR_H
    #define MATERIAL_EDITOR_H

    #include <QtGui/QMainWindow>

    #include "ui_Material_Editor.h"

    #include "CRenderer.h"
    using namespace Ogre;

    class MaterialEditor : public QMainWindow
    {
    //Q_OBJECT
    public:
    MaterialEditor(QWidget* parent = 0,
    Qt::WindowFlags f = 0)
    : QMainWindow(parent,f)
    {
    MatEdit.setupUi(this);
    }

    ~MaterialEditor()
    {

    }

    bool createMaterialPreviewWindow()
    {
    m_pMatWindowRoot = Root::getSingletonPtr();

    NameValuePairList pList;

    String MatWinHdle;
    MatWinHdle += StringConverter::toString((Ogre::uint)(this->MatEdit.Material_Preview->winId()));
    #if defined(Q_WS_WIN) || defined(Q_WS_MAC)
    pList["externalWindowHandle"] = MatWinHdle;
    #endif

    this->m_pMatRenderWindow = m_pMatWindowRoot->createRenderWindow("Material_Preview",
    MatEdit.Material_Preview->width(),
    MatEdit.Material_Preview->height(),
    false,
    &pList);

    this->m_pMatRenderWindow->setActive(true);

    return true;
    }

    private:
    Ui::Material_Editor MatEdit;
    Root* m_pMatWindowRoot;
    SceneManager* m_pMatSceneMgr;
    RenderWindow* m_pMatRenderWindow;
    };

    #endif

    @

    seems to be ok.......then again i'm no expert on a lot of things about C++ :-p
    So how to get rid of that? seems like i might have to do something or what not. Hmmm

    1 Reply Last reply
    0
    • D Offline
      D Offline
      DenisKormalev
      wrote on 21 Oct 2010, 21:55 last edited by
      #2

      You can remove
      @
      using namespace Ogre
      @

      It should help.

      1 Reply Last reply
      0
      • P Offline
        P Offline
        ProgrammerAtHeart3344
        wrote on 21 Oct 2010, 22:06 last edited by
        #3

        @static const uint qt_meta_data_CIrrationalEngine[] = {

        // content:
        5, // revision
        0, // classname
        0, 0, // classinfo
        1, 14, // methods
        0, 0, // properties
        0, 0, // enums/sets
        0, 0, // constructors
        0, // flags
        0, // signalCount

        // slots: signature, parameters, type, tag, flags
        19, 18, 18, 18, 0x08,

           0        // eod
        

        };
        @

        the problem comes frm this file, i removed the using namespace Ogre......so idk, let me know if u need something else, the material editor is important although not so important that i can stop dev of the engine.

        1 Reply Last reply
        0
        • D Offline
          D Offline
          DenisKormalev
          wrote on 21 Oct 2010, 22:38 last edited by
          #4

          so removing using didn't help? can you provide current output of compiler and text of file where this error happens (or at least all includes and usings from this file and some code around error string)?

          1 Reply Last reply
          0
          • P Offline
            P Offline
            ProgrammerAtHeart3344
            wrote on 21 Oct 2010, 23:06 last edited by
            #5

            @>moc_cirrationalengine.cpp
            1>.\GeneratedFiles\Debug\moc_cirrationalengine.cpp(20) : error C2872: 'uint' : ambiguous symbol
            1> could be 'c:\qt\4.7.0\include\qtcore../../src/corelib/global/qglobal.h(899) : unsigned int uint'
            1> or 'g:\users\eggman\downloads\ogresdk_vc9_v1-7-1\include\ogre\OgrePrerequisites.h(108) : Ogre::uint'
            1>Build log was saved at "file://g:\Users\Eggman\Documents\Visual Studio 2008\Projects\Irrational Engine v1.0\Irrational Engine v1.0\Debug\BuildLog.htm"
            1>Irrational Engine v1 - 1 error(s), 0 warning(s)@

            the error seems to come from the 1>moc_cirrationalengine.cpp file generated by the Qt4 application project i used to make this project (Meaning the wizard) Hmmmm, I'm really not sure what else to post other then that maybe this:

            @/****************************************************************************
            ** Meta object code from reading C++ file 'cirrationalengine.h'
            **
            ** Created: Thu Oct 21 18:02:43 2010
            ** by: The Qt Meta Object Compiler version 62 (Qt 4.7.0)
            **
            ** WARNING! All changes made in this file will be lost!
            *****************************************************************************/

            #include "../../cirrationalengine.h"
            #if !defined(Q_MOC_OUTPUT_REVISION)
            #error "The header file 'cirrationalengine.h' doesn't include <QObject>."
            #elif Q_MOC_OUTPUT_REVISION != 62
            #error "This file was generated using the moc from 4.7.0. It"
            #error "cannot be used with the include files from this version of Qt."
            #error "(The moc has changed too much.)"
            #endif

            QT_BEGIN_MOC_NAMESPACE
            static const uint qt_meta_data_CIrrationalEngine[] = {

            // content:
            5, // revision
            0, // classname
            0, 0, // classinfo
            1, 14, // methods
            0, 0, // properties
            0, 0, // enums/sets
            0, 0, // constructors
            0, // flags
            0, // signalCount

            // slots: signature, parameters, type, tag, flags
            19, 18, 18, 18, 0x08,

               0        // eod
            

            };

            static const char qt_meta_stringdata_CIrrationalEngine[] = {
            "CIrrationalEngine\0\0ShowMaterialEditor()\0"
            };

            const QMetaObject CIrrationalEngine::staticMetaObject = {
            { &QMainWindow::staticMetaObject, qt_meta_stringdata_CIrrationalEngine,
            qt_meta_data_CIrrationalEngine, 0 }
            };

            #ifdef Q_NO_DATA_RELOCATION
            const QMetaObject &CIrrationalEngine::getStaticMetaObject() { return staticMetaObject; }
            #endif //Q_NO_DATA_RELOCATION

            const QMetaObject *CIrrationalEngine::metaObject() const
            {
            return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject;
            }

            void CIrrationalEngine::qt_metacast(const char _clname)
            {
            if (!_clname) return 0;
            if (!strcmp(_clname, qt_meta_stringdata_CIrrationalEngine))
            return static_cast<void
            >(const_cast< CIrrationalEngine
            >(this));
            return QMainWindow::qt_metacast(_clname);
            }

            int CIrrationalEngine::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
            {
            _id = QMainWindow::qt_metacall(_c, _id, _a);
            if (_id < 0)
            return _id;
            if (_c == QMetaObject::InvokeMetaMethod) {
            switch (_id) {
            case 0: ShowMaterialEditor(); break;
            default: ;
            }
            _id -= 1;
            }
            return _id;
            }
            QT_END_MOC_NAMESPACE
            @
            like i said, i don't know if that will do let me know if u need anything else, I'm in no rush (I got Ogre to render in a Qt4 widget, took a couple days and a lot of trial and error)

            1 Reply Last reply
            0
            • R Offline
              R Offline
              rohanpm
              wrote on 22 Oct 2010, 06:24 last edited by
              #6

              You still didn't answer if you removed @using namespace Ogre@ or not?

              1 Reply Last reply
              0
              • D Offline
                D Offline
                DenisKormalev
                wrote on 22 Oct 2010, 06:25 last edited by
                #7

                Does cirrationalengine.h contain using instruction too? If yes try to remove it from there.

                1 Reply Last reply
                0
                • M Offline
                  M Offline
                  mjakubowski
                  wrote on 23 Oct 2010, 02:17 last edited by
                  #8

                  Both Qt and Ogre typedef uint. Fortunately, Ogre uses a namespace so you just need to remove all of the "using namespace Ogre;" statements from your source code. Then, you will have to prepend all the Ogre types with Ogre:: (so String becomes Ogre::String, FrameListener becomes Ogre::FrameListener, and so on).

                  Also, I don't know if you are using your own FrameListener or the one that comes with Ogre (ExampleFrameListener) but the example one had the "using namespace Ogre;" statement in it so you'd have to either implement your own FrameListener or modify ExampleFrameListener.h as well.

                  1 Reply Last reply
                  0
                  • P Offline
                    P Offline
                    ProgrammerAtHeart3344
                    wrote on 23 Oct 2010, 05:55 last edited by
                    #9

                    yea, i figured that out, thanks, one thing i've noticed i was creating the material editor window and got a few access violations, also, seems like when u open the editor and close it and open it again, that gives a "window already exists" exception from Ogre, there has to be a way to make it so when the window is closed it destroys the RenderWindow then when the editpr window is reopened recreates it......Hmmm

                    1 Reply Last reply
                    0

                    1/9

                    21 Oct 2010, 21:48

                    • Login

                    • Login or register to search.
                    1 out of 9
                    • First post
                      1/9
                      Last post
                    0
                    • Categories
                    • Recent
                    • Tags
                    • Popular
                    • Users
                    • Groups
                    • Search
                    • Get Qt Extensions
                    • Unsolved