niestety jestem poczatkujacym uzytkownikiem Labview i nie mam pojecia jak to zrobic: wywoluje dll stworzonego w visualu, chce zwrocic stringa, niestety zupelnie nie wiem jak go w Labview pozniej odczytac..
tego dlla tworze sama, wiec moze mi on zwracac albo char* albo string, tak czy siak, nie wiem jak to pozniej odczytac w Labview. Moja wiesza konczy sie na wywolaniu funkcji Call Library Node i skonfugurowaniu jej na return type C String Pointer. Probowalam szukac na necie i dowiedzialam sie, ze przed wywolaniem dlla powinnam zainicjalizowac pustego stringa.. tak czy siak za duzo mi to nie mowi gdyz nie wiem co dalej z tym robic
prosze o pomoc
wywolywanie dll i zwracanie stringa
Re: wywolywanie dll i zwracanie stringa
Prosze przyjzec sie jak ja to kiedys robilem. Uzywam stringa do zwracania errorow z DLL do Labview
Najpierw funkcja w C++:
DLLEXPORT int32 DLLCALLING USBwebcam_Stop(CAP_HANDLE
CaptureHandle,
int32
*NativeError,
char
*Message,
uInt32
MessageSize) {
int32 ErrorCode = NO_ERROR;
FonzoUSBWebcam *CapSystem;
if(CaptureHandle) {
CapSystem = g_CameraMap.GetTypedResourceForReference(CaptureHandle);
ErrorCode = CapSystem->StopDirectShow(Message, MessageSize);
g_CameraMap.ReleaseTypedResource(CapSystem);
} else {
_snprintf(Message, MessageSize, "DirectShow was not initialize!");
return -2;
}
return ErrorCode; }
tutaj nie inicjalizujemy nic, poprostu deklarujemy wskaznik na char.
Natiast tworzac funkcje w Labview (obrazek w zalaczniku) nalezy zadeklarowac najpierw string o zadanej dlugosci znakow (tablica 1024 znakow char) a nastepnie przekazac go na wejscie CNODE. Na jego wyjsciu otrzymamy zmieniona zawartosc.
Pozdrawiam Maciek
Najpierw funkcja w C++:
DLLEXPORT int32 DLLCALLING USBwebcam_Stop(CAP_HANDLE
CaptureHandle,
int32
*NativeError,
char
*Message,
uInt32
MessageSize) {
int32 ErrorCode = NO_ERROR;
FonzoUSBWebcam *CapSystem;
if(CaptureHandle) {
CapSystem = g_CameraMap.GetTypedResourceForReference(CaptureHandle);
ErrorCode = CapSystem->StopDirectShow(Message, MessageSize);
g_CameraMap.ReleaseTypedResource(CapSystem);
} else {
_snprintf(Message, MessageSize, "DirectShow was not initialize!");
return -2;
}
return ErrorCode; }
tutaj nie inicjalizujemy nic, poprostu deklarujemy wskaznik na char.
Natiast tworzac funkcje w Labview (obrazek w zalaczniku) nalezy zadeklarowac najpierw string o zadanej dlugosci znakow (tablica 1024 znakow char) a nastepnie przekazac go na wejscie CNODE. Na jego wyjsciu otrzymamy zmieniona zawartosc.
Pozdrawiam Maciek