<p>Bonsoir</p>
<p> </p>
<p>ceci concerne la suite de mon développement Dll de LabVIEW vers scilab.</p>
<p><br />je souhaite maintenant travailler avec des tableaux d'entiers (pour avancer d'un cran, les doubles pour après), et je rebloque lors de l'appel.</p>
<p>Je ne trouve pas d'exemple correspondant exactement à ma démarche donc je vous resollicite.</p>
<p> </p>
<p>Fichier .h de la fonction en dll :</p>
<p> </p>
<p>#include "extcode.h"</p>
<p>#pragma pack(push)</p>
<p>#pragma pack(1)</p>
<p> </p>
<p>#ifdef __cplusplus</p>
<p>extern "C" {</p>
<p>#endif</p>
<p>typedef struct {</p>
<p><span class="Apple-tab-span" style="white-space: pre;"> </span>int32_t dimSize;</p>
<p><span class="Apple-tab-span" style="white-space: pre;"> </span>int32_t CommandeNumRique[1];</p>
<p><span class="Apple-tab-span" style="white-space: pre;"> </span>} Int32ArrayBase;</p>
<p>typedef Int32ArrayBase **Int32Array;</p>
<p> </p>
<p>/*!</p>
<p> * AddTabInt</p>
<p> */</p>
<p>void __cdecl AddTabInt(Int32Array *tabA, Int32Array *tabB, </p>
<p><span class="Apple-tab-span" style="white-space: pre;"> </span>Int32Array *tabRes);</p>
<p> </p>
<p>long __cdecl LVDLLStatus(char *errStr, int errStrLen, void *module);</p>
<p> </p>
<p>/*</p>
<p>* Memory Allocation/Resize/Deallocation APIs for type 'Int32Array'</p>
<p>*/</p>
<p>Int32Array __cdecl AllocateInt32Array (int32 elmtCount);</p>
<p>MgErr __cdecl ResizeInt32Array (Int32Array *hdlPtr, int32 elmtCount);</p>
<p>MgErr __cdecl DeAllocateInt32Array (Int32Array *hdlPtr);</p>
<p> </p>
<p>#ifdef __cplusplus</p>
<p>} // extern "C"</p>
<p>#endif</p>
<p> </p>
<p>#pragma pack(pop)</p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p>Mon script scilab pour le test :</p>
<p> </p>
<p>a=[12,25,24]</p>
<p>b=[2,41,9]</p>
<p>link('F:\Prog LabVIEW\Dll labview\dll2\SharedLibTabIntAdd.dll','AddTabInt','c')</p>
<p>res = call("AddTabInt",a,1,"i",b,2,"i","out",[1,3],3,"i")</p>
<p>disp(res)</p>
<p> </p>
<p>Le message d'erreur dans la console :</p>
<p> </p>
<p>-->exec('C:\Documents\Scilab\TestDllAddTabInt.sce', -1)</p>
<p>Bibliothèque partagée chargée.</p>
<p>Édition de liens effectuée.</p>
<p>Warning !!!</p>
<p>Scilab has found a critical error (EXCEPTION_ACCESS_VIOLATION)</p>
<p>with "call" function.</p>
<p>Save your data and restart Scilab.</p>
<p> </p>
<p> i </p>
<p> </p>
<p>Attention : Problème avec la pile...</p>
<p><br /><br />Merci d'avance si vous voyez le problème d'accord entre prototype et appel de la fonction.</p>
<p> </p>
<p>TR</p>
<div>ps :Par ailleurs y a t'il un document qui précise les limitations des types de données utilisables?</div>