Undefine reference to soap_traverse_xsd__dateTime
Development toolkit for Web Services and XML data bindings for C & C++
Brought to you by:
engelen
These output errors are generated when I compile code using gsoap library.
And i didn't find the definition of soap_traverse_xsd__dateTime in the "custom" directory any source file, like "custom/struct_timeval.c" file.
/usr/bin/ld: ../lib/libonvif_server.a(soapC.c.o): in function `soap_traverse_PointerToxsd__dateTime':
soapC.c:(.text+0x4b2ad8): undefined reference to `soap_traverse_xsd__dateTime'
/usr/bin/ld: ../lib/libonvif_server.a(soapC.c.o): in function `soap_traverse_wsrfr__ResourceUnavailableFaultType':
soapC.c:(.text+0xfc184): undefined reference to `soap_traverse_xsd__dateTime'
/usr/bin/ld: ../lib/libonvif_server.a(soapC.c.o): in function `soap_traverse_wsrfr__ResourceUnknownFaultType':
soapC.c:(.text+0xfe05d): undefined reference to `soap_traverse_xsd__dateTime'
/usr/bin/ld: ../lib/libonvif_server.a(soapC.c.o): in function `soap_traverse_wsnt__ResumeFailedFaultType':
soapC.c:(.text+0xfff36): undefined reference to `soap_traverse_xsd__dateTime'
/usr/bin/ld: ../lib/libonvif_server.a(soapC.c.o): in function `soap_traverse_wsnt__PauseFailedFaultType':
soapC.c:(.text+0x101e0f): undefined reference to `soap_traverse_xsd__dateTime'
/usr/bin/ld: ../lib/libonvif_server.a(soapC.c.o): in function `soap_traverse_wsnt__UnableToDestroySubscriptionFaultType':
soapC.c:(.text+0x103ce8): undefined reference to `soap_traverse_xsd__dateTime'
/usr/bin/ld: ../lib/libonvif_server.a(soapC.c.o):soapC.c:(.text+0x105c2e): more undefined references to `soap_traverse_xsd__dateTime' follow
The problem is not clear. What options are used? What are the build steps? What is the part of the .h interface header file for soapcpp2 that contains the custom type?
Last edit: Robert van Engelen 2023-03-21
Adding traverse functions for custom types is meant to be done by the user, because soapcpp2 cannot "see" the internals of the custom serializable type definition. For example, if it is a struct with members like
struct timeval
, then the members are not visible to soapcpp2. It can only treat custom serializable types as if they are "primitive" types with no structure. If so, it's easy for soapcpp2 to generate traversal functions for these. Otherwise the user has to provide traversal functions, which is currently expected.To make this foolproof, the upcoming update 2.8.127 will assume that all custom types are simply dumb primitive types to generate a traversal function for those. This may not always be what the user may wanted if the custom type is actually structural.