mirror of
https://github.com/qpdf/qpdf.git
synced 2025-01-03 15:17:29 +00:00
Be more conservative about QPDF_DLL_CLASS with mingw (fixes #799)
* Define it even though previous experiments have shown it to be unnecessary since it seems like it may be necessary after all * Add QPDF_DLL_CLASS to QPDFObjectHelper and QPDFDocumentHelper in case there's some future unknown reason why someone may want to have them and/or in case it helps with the weird QPDFNameTreeObjectHelper problem.
This commit is contained in:
parent
db6598b449
commit
5c5b4e640e
@ -179,9 +179,11 @@ CODING RULES
|
|||||||
the shared object boundary (or "shared library boundary" -- we may
|
the shared object boundary (or "shared library boundary" -- we may
|
||||||
use either term in comments and documentation). In particular,
|
use either term in comments and documentation). In particular,
|
||||||
anything new derived from Pipeline or InputSource should be marked
|
anything new derived from Pipeline or InputSource should be marked
|
||||||
with QPDF_DLL_CLASS, but we don't need to do it for QPDFObjectHelper
|
with QPDF_DLL_CLASS. We shouldn't need to do it for QPDFObjectHelper
|
||||||
or QPDFDocumentHelper subclasses since there's no reason to use
|
or QPDFDocumentHelper subclasses since there's no reason to use
|
||||||
dynamic_cast with those.
|
dynamic_cast with those, but doing it anyway may help with some
|
||||||
|
strange cases for mingw or with some code generators that may
|
||||||
|
systematically do this for other reasons.
|
||||||
|
|
||||||
IMPORTANT NOTE ABOUT QPDF_DLL_CLASS: On mingw, the vtable for a
|
IMPORTANT NOTE ABOUT QPDF_DLL_CLASS: On mingw, the vtable for a
|
||||||
class with some virtual methods and no pure virtual methods seems
|
class with some virtual methods and no pure virtual methods seems
|
||||||
|
@ -42,14 +42,16 @@
|
|||||||
# define QPDF_DLL
|
# define QPDF_DLL
|
||||||
# endif
|
# endif
|
||||||
# define QPDF_DLL_PRIVATE
|
# define QPDF_DLL_PRIVATE
|
||||||
# define QPDF_DLL_CLASS
|
|
||||||
#elif defined __GNUC__
|
#elif defined __GNUC__
|
||||||
# define QPDF_DLL __attribute__((visibility("default")))
|
# define QPDF_DLL __attribute__((visibility("default")))
|
||||||
# define QPDF_DLL_PRIVATE __attribute__((visibility("hidden")))
|
# define QPDF_DLL_PRIVATE __attribute__((visibility("hidden")))
|
||||||
# define QPDF_DLL_CLASS QPDF_DLL
|
|
||||||
#else
|
#else
|
||||||
# define QPDF_DLL
|
# define QPDF_DLL
|
||||||
# define QPDF_DLL_PRIVATE
|
# define QPDF_DLL_PRIVATE
|
||||||
|
#endif
|
||||||
|
#ifdef __GNUC__
|
||||||
|
# define QPDF_DLL_CLASS QPDF_DLL
|
||||||
|
#else
|
||||||
# define QPDF_DLL_CLASS
|
# define QPDF_DLL_CLASS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -87,6 +89,9 @@ for a more in-depth discussion.
|
|||||||
multi-platform and building both static and shared libraries that
|
multi-platform and building both static and shared libraries that
|
||||||
use the same headers, so we don't bother.
|
use the same headers, so we don't bother.
|
||||||
|
|
||||||
|
* If we don't export base classes with mingw, the vtables don't end
|
||||||
|
up in the DLL.
|
||||||
|
|
||||||
* On Linux (and other similar systems):
|
* On Linux (and other similar systems):
|
||||||
|
|
||||||
* Common compilers such as gcc and clang export all symbols into the
|
* Common compilers such as gcc and clang export all symbols into the
|
||||||
|
@ -36,7 +36,7 @@
|
|||||||
// introduced to allow creation of higher level helper functions
|
// introduced to allow creation of higher level helper functions
|
||||||
// without polluting the public interface of QPDF.
|
// without polluting the public interface of QPDF.
|
||||||
|
|
||||||
class QPDFDocumentHelper
|
class QPDF_DLL_CLASS QPDFDocumentHelper
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
QPDF_DLL
|
QPDF_DLL
|
||||||
@ -45,7 +45,7 @@ class QPDFDocumentHelper
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
QPDF_DLL
|
QPDF_DLL
|
||||||
virtual ~QPDFDocumentHelper() = default;
|
virtual ~QPDFDocumentHelper();
|
||||||
QPDF_DLL
|
QPDF_DLL
|
||||||
QPDF&
|
QPDF&
|
||||||
getQPDF()
|
getQPDF()
|
||||||
|
@ -37,7 +37,7 @@
|
|||||||
// introduced to allow creation of higher level helper functions
|
// introduced to allow creation of higher level helper functions
|
||||||
// without polluting the public interface of QPDFObjectHandle.
|
// without polluting the public interface of QPDFObjectHandle.
|
||||||
|
|
||||||
class QPDFObjectHelper
|
class QPDF_DLL_CLASS QPDFObjectHelper
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
QPDF_DLL
|
QPDF_DLL
|
||||||
@ -46,7 +46,7 @@ class QPDFObjectHelper
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
QPDF_DLL
|
QPDF_DLL
|
||||||
virtual ~QPDFObjectHelper() = default;
|
virtual ~QPDFObjectHelper();
|
||||||
QPDF_DLL
|
QPDF_DLL
|
||||||
QPDFObjectHandle
|
QPDFObjectHandle
|
||||||
getObjectHandle()
|
getObjectHandle()
|
||||||
|
@ -59,6 +59,7 @@ set(libqpdf_SOURCES
|
|||||||
QPDFAnnotationObjectHelper.cc
|
QPDFAnnotationObjectHelper.cc
|
||||||
QPDFArgParser.cc
|
QPDFArgParser.cc
|
||||||
QPDFCryptoProvider.cc
|
QPDFCryptoProvider.cc
|
||||||
|
QPDFDocumentHelper.cc
|
||||||
QPDFEFStreamObjectHelper.cc
|
QPDFEFStreamObjectHelper.cc
|
||||||
QPDFEmbeddedFileDocumentHelper.cc
|
QPDFEmbeddedFileDocumentHelper.cc
|
||||||
QPDFExc.cc
|
QPDFExc.cc
|
||||||
@ -74,6 +75,7 @@ set(libqpdf_SOURCES
|
|||||||
QPDFNumberTreeObjectHelper.cc
|
QPDFNumberTreeObjectHelper.cc
|
||||||
QPDFObject.cc
|
QPDFObject.cc
|
||||||
QPDFObjectHandle.cc
|
QPDFObjectHandle.cc
|
||||||
|
QPDFObjectHelper.cc
|
||||||
QPDFObjGen.cc
|
QPDFObjGen.cc
|
||||||
QPDFOutlineDocumentHelper.cc
|
QPDFOutlineDocumentHelper.cc
|
||||||
QPDFOutlineObjectHelper.cc
|
QPDFOutlineObjectHelper.cc
|
||||||
|
7
libqpdf/QPDFDocumentHelper.cc
Normal file
7
libqpdf/QPDFDocumentHelper.cc
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#include <qpdf/QPDFDocumentHelper.hh>
|
||||||
|
|
||||||
|
QPDFDocumentHelper::~QPDFDocumentHelper()
|
||||||
|
{
|
||||||
|
// Must be explicit and not inline -- see QPDF_DLL_CLASS in
|
||||||
|
// README-maintainer
|
||||||
|
}
|
7
libqpdf/QPDFObjectHelper.cc
Normal file
7
libqpdf/QPDFObjectHelper.cc
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#include <qpdf/QPDFObjectHelper.hh>
|
||||||
|
|
||||||
|
QPDFObjectHelper::~QPDFObjectHelper()
|
||||||
|
{
|
||||||
|
// Must be explicit and not inline -- see QPDF_DLL_CLASS in
|
||||||
|
// README-maintainer
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user