INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

dll in LabVIEW - dringend!!



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

10.01.2006, 16:06
Beitrag #1

keysk Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Jan 2006



kA



dll in LabVIEW - dringend!!
Hallo an alle,

Ich weiß, dass diese Frage schon öfters gestellt wurde - bin ich aus keiner der gegebenen antworten wirklich schlau geworden.Sad
Also mein Problem im Detail: Ich versuche ein Matlabprogramm in LabVIEW einzubinden - da ich unabhängig von Matlab agieren wollte, habe ich mich für eine DLL entschieden die über eine Call Libary Function Node eingefügt werden soll.
Für den Anfang habe ich mit einem einfachen Programm begonnen und wenn ich die DLL im LabVIEW erstelle sieht, dass ganze so aus:

/* Call Libary Source File */

#include "extcode.h"

_declspec (dllexport) long avg_num(float a[], long size, float *avg);

_declspec (dllexport) long avg_num(float a[], long size, float *avg)
{
int i;
float sum = 0;
if (a != NULL)
{
for(i=0;i < size; i++)
sum = sum + a[i];
}
else
return (1);
*avg = sum / size;
return (0);
}

und funktioniert super.
Wenn ich, dass ganze als Matlabprogramm schreibe:
function [avg] = avgnum(a)
a = input('Please enter an array')
size = length(a)
sum = 0
for i = size
sum = sum + a(i)
avg = sum / size
end

und dann compile finde ich folgendes:
/*
* MATLAB Compiler: 4.1 (R14SP1)
* Date: Tue Jan 10 14:20:25 2006
* Arguments: "-B" "macro_default" "-l" "avgnum"
*/

#include <stdio.h>
#include "avgnum.h"


static HMCRINSTANCE _mcr_inst = NULL;


#if defined( _MSC_VER) || defined(__BORLANDC__) || defined(__WATCOMC__) || defined(__LCC__)
#include <windows.h>

static char path_to_dll[_MAX_PATH];

BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, void *pv)
{
if (dwReason == DLL_PROCESS_ATTACH)
{
char szDllPath[_MAX_PATH];
char szDir[_MAX_DIR];
if (GetModuleFileName(hInstance, szDllPath, _MAX_PATH) > 0)
{
_splitpath(szDllPath, path_to_dll, szDir, NULL, NULL);
strcat(path_to_dll, szDir);
}
else return FALSE;
}
else if (dwReason == DLL_PROCESS_DETACH)
{
}
return TRUE;
}
#endif
static int mclDefaultPrintHandler(const char *s)
{
return fwrite(s, sizeof(char), strlen(s), stdout);
}

static int mclDefaultErrorHandler(const char *s)
{
int written = 0, len = 0;
len = strlen(s);
written = fwrite(s, sizeof(char), len, stderr);
if (len > 0 && s[ len-1 ] != 'n')
written += fwrite("n", sizeof(char), 1, stderr);
return written;
}

bool avgnumInitializeWithHandlers(
mclOutputHandlerFcn error_handler,
mclOutputHandlerFcn print_handler
)
{
if (_mcr_inst != NULL)
return true;
if (!mclmcrInitialize())
return false;
if (!mclInitializeComponentInstance(&_mcr_inst, __MCC_avgnum_public_data,
__MCC_avgnum_name_data,
__MCC_avgnum_root_data,
__MCC_avgnum_session_data,
__MCC_avgnum_matlabpath_data,
__MCC_avgnum_matlabpath_data_count,
__MCC_avgnum_classpath_data,
__MCC_avgnum_classpath_data_count,
__MCC_avgnum_mcr_runtime_options,
__MCC_avgnum_mcr_runtime_option_count,
true, NoObjectType, LibTarget,
path_to_dll, error_handler,
print_handler))
return false;
return true;
}

bool avgnumInitialize(void)
{
return avgnumInitializeWithHandlers(mclDefaultErrorHandler,
mclDefaultPrintHandler);
}

void avgnumTerminate(void)
{
if (_mcr_inst != NULL)
mclTerminateInstance(&_mcr_inst);
}


void mlxAvgnum(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[])
{
mclFeval(_mcr_inst, "avgnum", nlhs, plhs, nrhs, prhs);
}

void mlfAvgnum(int nargout, mxArray** avg, mxArray* a)
{
mclMlfFeval(_mcr_inst, "avgnum", nargout, 1, 1, avg, a);
}

und damit kann weder LabVIEW noch ich etwas anfange.
Also falls mir vielleicht irgendwer wirklich konkret erklären könnte was ich falsch mache oder was ich mache muß, damit LabVIEW, das compilte Matlab file versteht wäre echt super.

lg
ALex

Im Licht des Tages - im Schatten der Nacht!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
Antwort schreiben 


Nachrichten in diesem Thema
dll in LabVIEW - dringend!! - keysk - 10.01.2006 16:06
dll in LabVIEW - dringend!! - Mario W. - 10.01.2006, 18:37
dll in LabVIEW - dringend!! - keysk - 11.01.2006, 09:24
dll in LabVIEW - dringend!! - Mario W. - 11.01.2006, 10:24
dll in LabVIEW - dringend!! - keysk - 07.03.2006, 15:01

Gehe zu: