<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Problem marshaling ippGetStatusString in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/Problem-marshaling-ippGetStatusString/m-p/915934#M15140</link>
    <description>&lt;P&gt;In IPP C# sample we do use code like this:&lt;/P&gt;&lt;PRE&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;[&lt;SPAN&gt;DllImport&lt;/SPAN&gt;(&lt;SPAN&gt;"ippcore-5.3.dll"&lt;/SPAN&gt;)]&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;public&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;static&lt;/SPAN&gt; &lt;SPAN&gt;extern&lt;/SPAN&gt; &lt;SPAN&gt;string&lt;/SPAN&gt; ippGetStatusString(IppStatus StsCode);&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;string &lt;/SPAN&gt;&lt;SPAN&gt;s&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;ippGetStatusString&lt;/SPAN&gt;&lt;SPAN&gt;(33);&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/PRE&gt;
&lt;P&gt;It is also possible to do marshalling by yourself but in a little bit simplier way&lt;/P&gt;&lt;PRE&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;[&lt;SPAN&gt;DllImport&lt;/SPAN&gt;(&lt;SPAN&gt;"ippcore-5.3.dll"&lt;/SPAN&gt;)]&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;public&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;static&lt;/SPAN&gt; &lt;SPAN&gt;extern&lt;/SPAN&gt; &lt;SPAN&gt;sbyte&lt;/SPAN&gt;* ippGetStatusString(IppStatus StsCode);&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;string &lt;/SPAN&gt;&lt;SPAN&gt;s = &lt;SPAN&gt;new&lt;/SPAN&gt; &lt;SPAN&gt;string&lt;/SPAN&gt;(ippGetStatusString(33));&lt;/SPAN&gt;&lt;SPAN&gt;&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/PRE&gt;
&lt;P&gt;Regards,&lt;BR /&gt; Vladimir&lt;/P&gt;</description>
    <pubDate>Mon, 24 Mar 2008 19:35:20 GMT</pubDate>
    <dc:creator>Vladimir_Dudnik</dc:creator>
    <dc:date>2008-03-24T19:35:20Z</dc:date>
    <item>
      <title>Problem marshaling ippGetStatusString</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Problem-marshaling-ippGetStatusString/m-p/915933#M15139</link>
      <description>&lt;FONT size="2"&gt;
&lt;P&gt;I'm having a problem with ippGetStatusString in Vista 64 using VS2008&lt;/P&gt;
&lt;P&gt;My code looks like&lt;/P&gt;
&lt;P&gt;[&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#2b91af" size="2"&gt;DllImport&lt;/FONT&gt;&lt;FONT size="2"&gt;(&lt;/FONT&gt;&lt;FONT color="#a31515" size="2"&gt;"ippcoreem64t-5.3.dll"&lt;/FONT&gt;&lt;FONT size="2"&gt;, CharSet=&lt;/FONT&gt;&lt;FONT color="#2b91af" size="2"&gt;CharSet&lt;/FONT&gt;&lt;FONT size="2"&gt;.Ansi)]&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;FONT color="#000000"&gt;[return: MarshalAs(UnmanagedType.LPStr)]&lt;/FONT&gt;&lt;BR /&gt;private&lt;/FONT&gt;&lt;FONT size="2"&gt; &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;static&lt;/FONT&gt;&lt;FONT size="2"&gt; &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;extern&lt;/FONT&gt;&lt;FONT size="2"&gt; &lt;/FONT&gt;&lt;FONT color="#2b91af" size="2"&gt;string &lt;/FONT&gt;&lt;FONT size="2"&gt;ippGetStatusString( &lt;/FONT&gt;&lt;FONT color="#2b91af" size="2"&gt;Int32&lt;/FONT&gt;&lt;FONT size="2"&gt; status);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="2"&gt;When I call it&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="2"&gt; string errorString = ippGetStatusString(33);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="2"&gt;The result a crash where the stack unwinds. A try around this code has NO effect.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="2"&gt;However if I access the return value via an IntPtr, it all works. Does anyone have anyidea what I am doing wrong? I don't know if my mistake is the marshaling or the ippGetStatusString itself.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="2"&gt;Thanks&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="2"&gt;Working code.&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;
&lt;P&gt;[&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#2b91af" size="2"&gt;DllImport&lt;/FONT&gt;&lt;FONT size="2"&gt;(&lt;/FONT&gt;&lt;FONT color="#a31515" size="2"&gt;"ippcoreem64t-5.3.dll"&lt;/FONT&gt;&lt;FONT size="2"&gt;, CharSet=&lt;/FONT&gt;&lt;FONT color="#2b91af" size="2"&gt;CharSet&lt;/FONT&gt;&lt;FONT size="2"&gt;.Ansi)]&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;private&lt;/FONT&gt;&lt;FONT size="2"&gt; &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;static&lt;/FONT&gt;&lt;FONT size="2"&gt; &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;extern&lt;/FONT&gt;&lt;FONT size="2"&gt; &lt;/FONT&gt;&lt;FONT color="#2b91af" size="2"&gt;IntPtr&lt;/FONT&gt;&lt;FONT size="2"&gt; ippGetStatusString( &lt;/FONT&gt;&lt;FONT color="#2b91af" size="2"&gt;Int32&lt;/FONT&gt;&lt;FONT size="2"&gt; status);&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;BR /&gt;and access the string by&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="2"&gt;&lt;FONT color="#2b91af"&gt;IntPtr&lt;/FONT&gt; resultPointer = ippGetStatusString(status);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#008000"&gt;&lt;FONT size="2"&gt;// Search for the null character, find the size and marshal over&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="2"&gt;&lt;FONT color="#0000ff"&gt;int&lt;/FONT&gt; i = 0;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="2"&gt;&lt;FONT color="#0000ff"&gt;while&lt;/FONT&gt; (&lt;FONT color="#0000ff"&gt;true&lt;/FONT&gt;)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="2"&gt;{&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#008000"&gt;&lt;FONT size="2"&gt;// Check for the null termination&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="2"&gt;&lt;FONT color="#0000ff"&gt;if&lt;/FONT&gt; (&lt;FONT color="#2b91af"&gt;Marshal&lt;/FONT&gt;.ReadByte(resultPointer, i) == 0)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="2"&gt;{&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="2"&gt;&lt;FONT color="#2b91af"&gt; Byte&lt;/FONT&gt;[] ba = &lt;FONT color="#0000ff"&gt;new&lt;/FONT&gt; &lt;FONT color="#2b91af"&gt;Byte&lt;/FONT&gt;&lt;I&gt;; &lt;/I&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="2"&gt;&lt;FONT color="#2b91af"&gt; Marshal&lt;/FONT&gt;.Copy(resultPointer, ba, 0, ba.Length);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="2"&gt;&lt;FONT color="#0000ff"&gt; return&lt;/FONT&gt; System.Text.&lt;FONT color="#2b91af"&gt;ASCIIEncoding&lt;/FONT&gt;.ASCII.GetString(ba);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="2"&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#008000"&gt;&lt;FONT size="2"&gt;// No, go again&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="2"&gt;i = i + 1;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="2"&gt;}&lt;/FONT&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 25 Feb 2008 16:13:38 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Problem-marshaling-ippGetStatusString/m-p/915933#M15139</guid>
      <dc:creator>Ockham_s_Razor</dc:creator>
      <dc:date>2008-02-25T16:13:38Z</dc:date>
    </item>
    <item>
      <title>Re: Problem marshaling ippGetStatusString</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Problem-marshaling-ippGetStatusString/m-p/915934#M15140</link>
      <description>&lt;P&gt;In IPP C# sample we do use code like this:&lt;/P&gt;&lt;PRE&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;[&lt;SPAN&gt;DllImport&lt;/SPAN&gt;(&lt;SPAN&gt;"ippcore-5.3.dll"&lt;/SPAN&gt;)]&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;public&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;static&lt;/SPAN&gt; &lt;SPAN&gt;extern&lt;/SPAN&gt; &lt;SPAN&gt;string&lt;/SPAN&gt; ippGetStatusString(IppStatus StsCode);&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;string &lt;/SPAN&gt;&lt;SPAN&gt;s&lt;/SPAN&gt;&lt;SPAN&gt; = &lt;/SPAN&gt;&lt;SPAN&gt;ippGetStatusString&lt;/SPAN&gt;&lt;SPAN&gt;(33);&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/PRE&gt;
&lt;P&gt;It is also possible to do marshalling by yourself but in a little bit simplier way&lt;/P&gt;&lt;PRE&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;[&lt;SPAN&gt;DllImport&lt;/SPAN&gt;(&lt;SPAN&gt;"ippcore-5.3.dll"&lt;/SPAN&gt;)]&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;public&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;static&lt;/SPAN&gt; &lt;SPAN&gt;extern&lt;/SPAN&gt; &lt;SPAN&gt;sbyte&lt;/SPAN&gt;* ippGetStatusString(IppStatus StsCode);&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;SPAN&gt;string &lt;/SPAN&gt;&lt;SPAN&gt;s = &lt;SPAN&gt;new&lt;/SPAN&gt; &lt;SPAN&gt;string&lt;/SPAN&gt;(ippGetStatusString(33));&lt;/SPAN&gt;&lt;SPAN&gt;&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/PRE&gt;
&lt;P&gt;Regards,&lt;BR /&gt; Vladimir&lt;/P&gt;</description>
      <pubDate>Mon, 24 Mar 2008 19:35:20 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Problem-marshaling-ippGetStatusString/m-p/915934#M15140</guid>
      <dc:creator>Vladimir_Dudnik</dc:creator>
      <dc:date>2008-03-24T19:35:20Z</dc:date>
    </item>
  </channel>
</rss>

