<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[gSOAP: Unterschied in Release-&#x2F;Debugversion]]></title><description><![CDATA[<p>Hallo</p>
<p>Visual Studio 2005 / Windows XP - Windows Server 2003</p>
<p>Ich habe eine C++-Applikation, die via SOAP (implementiert mit gSOAP) auf einen Server zugreift. Dies funktioniert wunderbar in der Debug-Version, mit der Releaseversion habe ich aber Probleme. Zusätzlich läuft die Debugversion unter Windows XP, die Releaseversion und Windows Server 2003. Lässt sich leider nicht ändern.</p>
<p>Um dem Problem auf die Spur zu kommen habe ich ein Logfile eingebaut und dabei folgenden Unterschied fest gestellt.</p>
<p>-- START Methode 1 ----------------------------------<br />
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTons4__ArrayOfString(struct soap *soap, const char *tag, int id, ns4__ArrayOfString *const*a, const char *type)<br />
{<br />
id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_ns4__ArrayOfString);<br />
if (id &lt; 0) return soap-&gt;error;<br />
return (*a)-&gt;soap_out(soap, tag, id, type);<br />
}<br />
-- ENDE Methode 1 ----------------------------------</p>
<p>Wenn ich hier das 0. Element von ns4__ArrayOfString (ein std::vector mit std::strings) anschaue steht das eine ID, z.B. 16 drin. Am Ende der Methode wird soap_out aufgerufen. Diese folgt als nächstes und ist eine Methode einer Klasse, im Unterschied zur vorhergehenden Methode, die offensichtlich keiner Klasse angehört.</p>
<p>-- START Methode 2 ----------------------------------<br />
int ns4__ArrayOfString::soap_out(struct soap *soap, const char *tag, int id, const char *type) const<br />
{<br />
return soap_out_ns4__ArrayOfString(soap, tag, id, this, type);<br />
}<br />
-- ENDE Methode 2 ----------------------------------</p>
<p>Schaue ich mir hier das 0. Element des Vektors an, erhalt ich den String &lt;SOH&gt;3 &lt;SOH&gt;16 (&lt;SOH&gt; ist das Asciizeichen Start of heading). Zudem ist die Adresse dieses Element unterschiedlich zur obigen Methode. Offensichtlich geht also irgendwas schief beim Aufruf von soap_put (return (*a)-&gt;soap_out(soap, tag, id, type);), ich komme nur nicht drauf was.</p>
<p>Wie gesagt kann ich dieses Verhalten nur in der Release-Version feststellen, in der Debug-Version funktioniert es einwandfrei (gleicher String, gleine Memoryadresse).</p>
<p>Kann mir jemand einen Tipp geben, was das schief läuft?<br />
Hat es was mit C/C++ zu tun?<br />
Compiler- oder Linkereinstellungen?</p>
<p>Danke für jeden Hinweis.</p>
<p>Gruess<br />
Hans</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/250619/gsoap-unterschied-in-release-debugversion</link><generator>RSS for Node</generator><lastBuildDate>Tue, 15 Sep 2026 23:39:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/250619.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 21 Sep 2009 13:49:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to gSOAP: Unterschied in Release-&#x2F;Debugversion on Mon, 21 Sep 2009 13:49:59 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Visual Studio 2005 / Windows XP - Windows Server 2003</p>
<p>Ich habe eine C++-Applikation, die via SOAP (implementiert mit gSOAP) auf einen Server zugreift. Dies funktioniert wunderbar in der Debug-Version, mit der Releaseversion habe ich aber Probleme. Zusätzlich läuft die Debugversion unter Windows XP, die Releaseversion und Windows Server 2003. Lässt sich leider nicht ändern.</p>
<p>Um dem Problem auf die Spur zu kommen habe ich ein Logfile eingebaut und dabei folgenden Unterschied fest gestellt.</p>
<p>-- START Methode 1 ----------------------------------<br />
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTons4__ArrayOfString(struct soap *soap, const char *tag, int id, ns4__ArrayOfString *const*a, const char *type)<br />
{<br />
id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_ns4__ArrayOfString);<br />
if (id &lt; 0) return soap-&gt;error;<br />
return (*a)-&gt;soap_out(soap, tag, id, type);<br />
}<br />
-- ENDE Methode 1 ----------------------------------</p>
<p>Wenn ich hier das 0. Element von ns4__ArrayOfString (ein std::vector mit std::strings) anschaue steht das eine ID, z.B. 16 drin. Am Ende der Methode wird soap_out aufgerufen. Diese folgt als nächstes und ist eine Methode einer Klasse, im Unterschied zur vorhergehenden Methode, die offensichtlich keiner Klasse angehört.</p>
<p>-- START Methode 2 ----------------------------------<br />
int ns4__ArrayOfString::soap_out(struct soap *soap, const char *tag, int id, const char *type) const<br />
{<br />
return soap_out_ns4__ArrayOfString(soap, tag, id, this, type);<br />
}<br />
-- ENDE Methode 2 ----------------------------------</p>
<p>Schaue ich mir hier das 0. Element des Vektors an, erhalt ich den String &lt;SOH&gt;3 &lt;SOH&gt;16 (&lt;SOH&gt; ist das Asciizeichen Start of heading). Zudem ist die Adresse dieses Element unterschiedlich zur obigen Methode. Offensichtlich geht also irgendwas schief beim Aufruf von soap_put (return (*a)-&gt;soap_out(soap, tag, id, type);), ich komme nur nicht drauf was.</p>
<p>Wie gesagt kann ich dieses Verhalten nur in der Release-Version feststellen, in der Debug-Version funktioniert es einwandfrei (gleicher String, gleine Memoryadresse).</p>
<p>Kann mir jemand einen Tipp geben, was das schief läuft?<br />
Hat es was mit C/C++ zu tun?<br />
Compiler- oder Linkereinstellungen?</p>
<p>Danke für jeden Hinweis.</p>
<p>Gruess<br />
Hans</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1782187</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1782187</guid><dc:creator><![CDATA[hstoessel]]></dc:creator><pubDate>Mon, 21 Sep 2009 13:49:59 GMT</pubDate></item></channel></rss>