On 14/05/2019 02:32, Regina Henschel wrote:
I need help again. I try to write a unit test
https://gerrit.libreoffice.org/#/c/72229/
It works with Windows10. But Jenkins fails on Mac with message
https://ci.libreoffice.org/job/gerrit_mac/32803/
Undefined symbols for architecture x86_64:
"SdrObjCustomShape::DragMoveCustomShapeHdl(Point const&, unsigned
short, bool)", referenced from:
(anonymous namespace)::testTdf115813_OOXML_XY_handle::TestBody()
in customshapes.o
"SdrObjCustomShape::GetInteractionHandles() const", referenced from:
(anonymous namespace)::testTdf115813_OOXML_XY_handle::TestBody()
in customshapes.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see
invocation)
I have now build it in a VM with Ubuntu 16.0 LTS. There too I get an
error. Here the message is
cd /home/vmregina/lo/core/svx && make -j 4 -rs check
[build DEP] LNK:CppunitTest/libtest_svx_unit.so
[build LNK] CppunitTest/libtest_svx_unit.so
/usr/bin/ld.gold: error:
/home/vmregina/lo/core/workdir/CxxObject/svx/qa/unit/customshapes.o:
requires dynamic R_X86_64_PC32 reloc against
'_ZNK17SdrObjCustomShape21GetInteractionHandlesEv' which may overflow at
runtime; recompile with -fPIC
/home/vmregina/lo/core/svx/qa/unit/customshapes.cxx:361: error:
undefined reference to 'SdrObjCustomShape::GetInteractionHandles() const'
/home/vmregina/lo/core/svx/qa/unit/customshapes.cxx:365: error:
undefined reference to 'SdrObjCustomShape::GetInteractionHandles() const'
/home/vmregina/lo/core/svx/qa/unit/customshapes.cxx:369: error:
undefined reference to 'SdrObjCustomShape::DragMoveCustomShapeHdl(Point
const&, unsigned short, bool)'
/home/vmregina/lo/core/svx/qa/unit/customshapes.cxx:371: error:
undefined reference to 'SdrObjCustomShape::GetInteractionHandles() const'
collect2: error: ld returned 1 exit status
/home/vmregina/lo/core/solenv/gbuild/LinkTarget.mk:635: recipe for
target
'/home/vmregina/lo/core/workdir/LinkTarget/CppunitTest/libtest_svx_unit.so'
failed
make[1]: ***
[/home/vmregina/lo/core/workdir/LinkTarget/CppunitTest/libtest_svx_unit.so]
Error 1
Makefile:120: recipe for target 'svx.check' failed
make: *** [svx.check] Error 2
What is needed for these systems? Does it make a difference whether it
is a debug build or not? My current Windows setting is a non-debug
build, in the Linux VM it is a debug-build.
In include/svx/svdoashp.hxx, the SdrObjCustomShape member functions
GetInteractionHandles and DragMoveCustomShapeHdl are marked as
SVX_DLLPRIVATE (i.e., SAL_DLLPRIVATE). On Windows, that happens to have
no effect, but on other platforms it prevents those symbols from being
exported from the svxcore library, so you can't actually access those
functions from test code.
The technically preferred solution would be if you can somehow avoid
calling those functions directly from the test code. Less appealing
hacks to get it working are either to not mark those functions as
SVX_DLLPRIVATE in include/svx/svdoashp.hxx, or to make
svx/CppunitTest_svx_unit.mk use gb_CppunitTest_use_library_objects to
directly include (copies of) the svxcore objects, instead of using
gb_CppunitTest_use_libraries to link against the svxcore library.
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.