I have to pass from a VI to a Microsoft Visual C++ DLL, a cluster with
some arrays of various data type. The problem is with Double array,
that during Visual C debug is incorrect:the dimension is correct
passed, but not array data. In the DLL I have inserted the C code
genereted by LabVIEW. I tried to pass a cluster of only one array of
double, and the results is the same. Then, I tried to pass a cluster
with scalar number and the result is correct in only one case. If the
double data is the first in the cluster, the result is correct; if the
first is another data type, such as integer or boolean, the double
data is incorrect during the debug of the DLL.
This is the code of my DLL:

// LabViewParam.cpp : Defines the entry point for the DLL application.
//

#include "stdafx.h"
#include "LabViewParam.h"
#include "extcode.h"

BOOL APIENTRY DllMain( HANDLE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                                         )
{
    switch (ul_reason_for_call)
        {
                case DLL_PROCESS_ATTACH:
                case DLL_THREAD_ATTACH:
                case DLL_THREAD_DETACH:
                case DLL_PROCESS_DETACH:
                        break;
    }
    return TRUE;
}


typedef struct {
        long dimSize;
        double elt[1];
        } TD2;
typedef TD2 **TD2Hdl;

typedef struct {
        TD2Hdl elt1;
        } TD1;


// This is an example of an exported variable
LABVIEWPARAM_API int nLabViewParamPass=0;

// This is an example of an exported function.
LABVIEWPARAM_API int LabViewParamPass(TD1 *pparam)
{
        double parametro;
        int i;
        for (i=0;i<(**(*pparam).elt1).dimSize;i++)
        {
                                parametro=(**(*pparam).elt1).elt[i];
        }
        return 42;
}

// This is the constructor of a class that has been exported.
// see LabViewParam.h for the class definition
CLabViewParam::CLabViewParam()
{
        return;
}


I use LabVIEW 7.0 and Windows XP.
Sorry for my english.
Thanks to every one for your suggestions.

Filippo

Reply via email to