[
https://issues.apache.org/jira/browse/XERCESC-2114?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16153208#comment-16153208
]
Mathieu Champlon edited comment on XERCESC-2114 at 9/5/17 7:28 AM:
-------------------------------------------------------------------
I just got hit by this when upgrading xerces from 3.1.2 to 3.2.0.
In 3.1.2 there was
{noformat}
$ dumpbin /exports ../../../lib/vc100_x64/xerces-c_3.lib | grep
alignPointerForNewBlockAllocation
?alignPointerForNewBlockAllocation@XMLPlatformUtils@xercesc_3_1@@SA_K_K@Z
(public: static unsigned __int64 __cdecl
xercesc_3_1::XMLPlatformUtils::alignPointerForNewBlockAllocation(unsigned
__int64))
?alignment@?1??alignPointerForNewBlockAllocation@XMLPlatformUtils@xercesc_3_1@@SA_K_K@Z@4_KB
(unsigned __int64 const `public: static unsigned __int64 __cdecl
xercesc_3_1::XMLPlatformUtils::alignPointerForNewBlockAllocation(unsigned
__int64)'::`2'::alignment)
{noformat}
whereas now in 3.2.0
{noformat}
$ dumpbin /exports ../../out/vc100_x64/xerces-c/lib/xerces-c_3.lib | grep
alignPointerForNewBlockAllocation
?alignPointerForNewBlockAllocation@XMLPlatformUtils@xercesc_3_2@@SA_K_K@Z
(public: static unsigned __int64 __cdecl
xercesc_3_2::XMLPlatformUtils::alignPointerForNewBlockAllocation(unsigned
__int64))
{noformat}
meaning it is missing the 'alignment' static variable from the (static inline)
function
{code}
#ifdef XML_PLATFORM_NEW_BLOCK_ALIGNMENT
static const XMLSize_t alignment = XML_PLATFORM_NEW_BLOCK_ALIGNMENT;
#else
static const XMLSize_t alignment = (sizeof(void*) >= sizeof(double)) ?
sizeof(void*) : sizeof(double);
#endif
{code}
I'm guessing this is likely a compilation flag of some sort as the shift to
cmake seems to be the only difference with before.
I haven't pushed this further as having alignPointerForNewBlockAllocation
inline doesn't make much sense to me to begin with.
Also with XML_PLATFORM_NEW_BLOCK_ALIGNMENT this feels like asking for ODR
violation…
In the end I removed the inline keyword and moved the implementation to
PlatformUtils.cpp.
Another workaround would have been to remove the static in front of alignment.
was (Author: mat):
I just got hit by this when upgrading xerces from 3.1.2 to 3.2.0.
In 3.1.2 there was
{noformat}
$ cl dumpbin /exports ../../../lib/vc100_x64/xerces-c_3.lib | grep
alignPointerForNewBlockAllocation
?alignPointerForNewBlockAllocation@XMLPlatformUtils@xercesc_3_1@@SA_K_K@Z
(public: static unsigned __int64 __cdecl
xercesc_3_1::XMLPlatformUtils::alignPointerForNewBlockAllocation(unsigned
__int64))
?alignment@?1??alignPointerForNewBlockAllocation@XMLPlatformUtils@xercesc_3_1@@SA_K_K@Z@4_KB
(unsigned __int64 const `public: static unsigned __int64 __cdecl
xercesc_3_1::XMLPlatformUtils::alignPointerForNewBlockAllocation(unsigned
__int64)'::`2'::alignment)
{noformat}
whereas now in 3.2.0
{noformat}
$ cl dumpbin /exports ../../out/vc100_x64/xerces-c/lib/xerces-c_3.lib | grep
alignPointerForNewBlockAllocation
?alignPointerForNewBlockAllocation@XMLPlatformUtils@xercesc_3_2@@SA_K_K@Z
(public: static unsigned __int64 __cdecl
xercesc_3_2::XMLPlatformUtils::alignPointerForNewBlockAllocation(unsigned
__int64))
{noformat}
meaning it is missing the 'alignment' static variable from the (static inline)
function
{code}
#ifdef XML_PLATFORM_NEW_BLOCK_ALIGNMENT
static const XMLSize_t alignment = XML_PLATFORM_NEW_BLOCK_ALIGNMENT;
#else
static const XMLSize_t alignment = (sizeof(void*) >= sizeof(double)) ?
sizeof(void*) : sizeof(double);
#endif
{code}
I'm guessing this is likely a compilation flag of some sort as the shift to
cmake seems to be the only difference with before.
I haven't pushed this further as having alignPointerForNewBlockAllocation
inline doesn't make much sense to me to begin with.
Also with XML_PLATFORM_NEW_BLOCK_ALIGNMENT this feels like asking for ODR
violation…
In the end I removed the inline keyword and moved the implementation to
PlatformUtils.cpp.
Another workaround would have been to remove the static in front of alignment.
> Link failure with Xalan-C
> -------------------------
>
> Key: XERCESC-2114
> URL: https://issues.apache.org/jira/browse/XERCESC-2114
> Project: Xerces-C++
> Issue Type: Bug
> Components: Build
> Affects Versions: 3.2.0
> Environment: VS2013 on Windows Server 2012R2
> Reporter: Roger Leigh
>
> Testing latest rc1 with xalan and VS2013:
> [Build
> log|https://ci.openmicroscopy.org/view/Files/job/OME-FILES-CPP-DEV-merge-win-superbuild/VSARCH=x64,VSCONFIG=Release,VSVERSION=12,label=maxquant-ome/714/console]
> Using [this
> patch|https://raw.githubusercontent.com/ome/ome-cmake-superbuild/master/packages/xalan/patches/win-vc12.diff]
> to build Xalan with VS2013 (it's just the upgraded project files).
> {noformat}
> 12:29:32 (Link target) ->
> 12:29:32 XalanDiagnosticMemoryManager.obj : error LNK2001:
> unresolved external symbol "__declspec(dllimport) unsigned __int64 const
> `public: static unsigned __int64 __cdecl
> xercesc_3_2::XMLPlatformUtils::alignPointerForNewBlockAllocation(unsigned
> __int64)'::`2'::alignment"
> (__imp_?alignment@?1??alignPointerForNewBlockAllocation@XMLPlatformUtils@xercesc_3_2@@SA_K_K@Z@4_KB)
>
> [D:\build\OME-FILES-CPP-DEV-merge-win-superbuild\2a8f6256\build\xalan-source\c\Projects\Win32\VC12\AllInOne\AllInOne.vcxproj]
> 12:29:32 ..\..\..\..\Build\Win64\VC12\Release\Xalan-C_1_11.dll :
> fatal error LNK1120: 1 unresolved externals
> [D:\build\OME-FILES-CPP-DEV-merge-win-superbuild\2a8f6256\build\xalan-source\c\Projects\Win32\VC12\AllInOne\AllInOne.vcxproj]
> {noformat}
> Is there any incompatible change expected here? Could potentially be missing
> symbol exports or anything of that nature?
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]