Note that there are some explanatory texts on larger screens.

plurals
  1. POC++/LabVIEW interop: error extracting data from LabVIEW array/ unexpected type conversion in function parameter
    text
    copied!<p>I'm using <a href="http://msmvps.com/blogs/vandooren/archive/2006/08/10/Fun-with-template-classes_3A00_-Manipulating-LabVIEW-arrays-in-C_2B002B002C00_-part-3.aspx" rel="nofollow">Cluebat-man's LabVIEW-C++ array interoperability class,</a> and I'm getting an error extracting the data from from the array. Or, rather, the data extraction appears to succeed, but build fails when I try to use the data a line later.</p> <p>(Context: The program is designed to implement Manjunath et al's peer-group filtering; the function is designed to extract the hue plane of an image. I'm fairly certain it's not a problem with the specific function, aside from perhaps its declaration of parameters, because the same problem crops up later in the program when I try to use the results from <code>getHuePlane()</code>)</p> <pre><code>#ifndef IO_TYPE //Normal arrays or LabVIEW? #define I_TYPE /* int* */ CLvArrayHandlePtr&lt;unsigned __int32, 2&gt; #define O_TYPE /* int* */ CLvArrayHandlePtr&lt;unsigned __int8, 2&gt; #define IO_TYPE #endif #ifndef USING_LABVIEW_DEFINED #define USING_LABVIEW //remove if not #define USING_LABVIEW_DEFINED #endif </code></pre> <p>Extraction and function call:</p> <pre><code>#include "LvArrayIndexer.h" #include "LvArrayTemplate.h" O_TYPE pgf(I_TYPE HSLimage, int width, int height, int halfWindowSize, int noiseThreshold) { #ifdef USING_LABVIEW size_t size[2] = {width, height}; HSLimage.Resize(size); CLvArrayIndexer&lt;unsigned __int32, 2 &gt; baseImgIndexer(HSLimage); CLvArrayHandlePtr&lt;unsigned __int8, 2 &gt; hueImage; hueImage.Resize(size); CLvArrayIndexer&lt;unsigned __int8, 2 &gt; hueImgIndexer(hueImage); int LvImageData[width][height]; #else int hueImage[width][height]; #endif int hueImageData[width][height]; int windowSize = 2 * halfWindowSize - 1; int windowLength = windowSize * windowSize; int window[windowSize][windowSize]; int flattenedWindow[windowLength]; vector&lt;int&gt; peerGroup; int currentValue; #ifdef USING_LABVIEW for (int x = 0; x &lt; width; x++) for (int y = 0; y &lt; height; y++) LvImageData[x][y] = baseImgIndexer[x][y]; hueImageData = getHuePlane(LvImageData, width, height); #else hueImageData = getHuePlane(HSLimage, width, height); #endif //Function continues } </code></pre> <p>Function definition:</p> <pre><code>int* getHuePlane(int* HSLimage, int width, int height) { int hueImage[width][height]; double calcValue; /*Get hue plane *AL HU SA LU -&gt;AL HU.SA LU -&gt; AL HUF *AL HU -&gt; AL.HU -&gt; 0.HU -&gt; HU */ for (int x = 0; x &lt; width; x++) { for (int y = 0; y &lt; height; y++) { calcValue = int(double(HSLimage[x][y]) / 65536); //A-H-S-L; removes S-L calcValue = (calcValue / 256) - int(calcValue / 256); calcValue = calcValue * 256; hueImage[x][y] = int(calcValue); } } return hueImage; } </code></pre> <p>The error is:</p> <pre><code>pgf.cpp:88:58: error: cannot convert 'int (*)[(((unsigned int)(((int)height) + -0x000000001)) + 1)]' to 'int*' for argument '1' to 'int* getHuePlane(int*, int, int)' </code></pre> <p>System information:</p> <ul> <li>IDE:Netbeans 7.1</li> <li>Compiler: MinGW (gcc v4.6.2)</li> <li>Make: GNU make 3.79.1</li> <li>System: Windows 7 version 6.1</li> </ul>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload