Uploaded image for project: 'Qpid'
  1. Qpid
  2. QPID-3478

Windows Visual Studio 2010 warning C4251 'needs to have dll interface' qpid::amqp_0_10::MapCodec::contentType

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 0.12
    • 0.17
    • C++ Broker, C++ Client
    • None
    • Windows builds using Visual Studio 2010

    Description

      File cpp/include/qpid/amqp_0_10/Codecs.h has code to the effect of:

      class QPID_COMMON_EXTERN MapCodec
      {
      public:
      static const std::string contentType;
      private:
      };

      VS2010 warns that exporting a std::string from a DLL may have unexpected consequences.

      One possible solution is from

      http://www.eggheadcafe.com/software/aspnet/30952961/a-solution-to-warning-c4251--class-needs-to-have-dllinterface.aspx

      2. You can define a wrapper class that has no inline functions and defines all the potentially compiler-generated functions (default ctor, copy ctor, dtor, and assignment operator) and dllexport that.

      Other discussion of this issue:

      http://stackoverflow.com/questions/2132747/warning-c4251-when-building-a-dll-that-exports-a-class-containing-an-atlcstring

      Attachments

        1. QPID-3478.patch
          4 kB
          Charles E. Rolke

        Activity

          People

            chug Charles E. Rolke
            chug Charles E. Rolke
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: