Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-41810

[REG 5.3->5.4] BC break in qvariant.h due to MSVC name mangling?

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • P1: Critical
    • 5.4.0 Beta
    • 5.4.0 Alpha
    • Core: Other
    • None
    • Windows, MSVC
    • a4aea7b578dd5ed6544ad8dbe488bb14817785b6 (5.4, 7.10.2014, 5.4 RC?)

    Description

      The attached example compiled against 5.3 no longer runs in 5.4 producing:

      ---------------------------
      qtbug41810.exe - Entry Point Not Found
      ---------------------------
      The procedure entry point ?convert@QVariant@@QEBA_NHPEAX@Z could not be located in the dynamic link library d:\dev\projects\qtbug41810_53\debug\qtbug41810.exe. 
      

      Relevant commits: "Update MSVC compiler features according to testing" 7ab6f24ac1f0b5877356f4781827bc8f65bbcdcf (qtbase/dev, 21.6.2014) https://codereview.qt-project.org/#/c/88026/3
      enabled template friends for MSVC and thus changed the visibility of qvariant funcs due to:

      #ifndef Q_NO_TEMPLATE_FRIENDS
          template<typename T>
          friend inline T qvariant_cast(const QVariant &);
          template<typename T> friend struct QtPrivate::QVariantValueHelper;
      protected:
      #else
      public:
      #endif
          Private d;
          void create(int type, const void *copy);
          bool cmp(const QVariant &other) const;
          int compare(const QVariant &other) const;
          bool convert(const int t, void *ptr) const;
      

      Attachments

        Issue Links

          For Gerrit Dashboard: QTBUG-41810
          # Subject Branch Project Status CR V

          Activity

            People

              kleint Friedemann Kleint
              kleint Friedemann Kleint
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes