DLL - wskazówki
Podczas pisania biblioteki DLL należy pamiętać o następujących wskazówkach -
Użyj odpowiedniej konwencji wywoływania (C lub stdcall).
Pamiętaj o prawidłowej kolejności argumentów przekazywanych do funkcji.
NIGDY nie zmieniaj rozmiaru tablic ani nie łącz ciągów za pomocą argumentów przekazanych bezpośrednio do funkcji. Pamiętaj, że parametry, które przekazujesz, są danymi LabVIEW. Zmiana rozmiaru tablicy lub łańcucha może spowodować awarię poprzez nadpisanie innych danych przechowywanych w pamięci LabVIEW. MOŻESZ zmieniać rozmiar tablic lub łączyć ciągi, jeśli przekażesz uchwyt LabVIEW Array Handle lub LabVIEW String Handle i używasz kompilatora Visual C ++ lub kompilatora Symantec do kompilowania biblioteki DLL.
Podczas przekazywania ciągów do funkcji wybierz prawidłowy typ ciągu do przekazania. Uchwyt ciągowy C, Pascal lub LabVIEW.
Łańcuchy Pascal są ograniczone do 255 znaków.
Ciągi C są zakończone wartością NULL. Jeśli funkcja DLL zwraca dane liczbowe w formacie łańcucha binarnego (na przykład przez GPIB lub port szeregowy), może zwrócić wartości NULL jako część ciągu danych. W takich przypadkach przekazywanie tablic krótkich (8-bitowych) liczb całkowitych jest najbardziej niezawodne.
Jeśli pracujesz z tablicami lub ciągami danych, ZAWSZE przekazuj bufor lub tablicę, która jest wystarczająco duża, aby pomieścić wszelkie wyniki umieszczone w buforze przez funkcję, chyba że przekazujesz je jako uchwyty LabVIEW, w takim przypadku możesz zmienić ich rozmiar za pomocą CIN działa w kompilatorze Visual C ++ lub Symantec.
Wyświetl listę funkcji DLL w sekcji EXPORTS pliku definicji modułu, jeśli używasz _stdcall.
Wyświetla listę funkcji DLL, które inne aplikacje wywołują w sekcji EXPORTS pliku definicji modułu lub w celu uwzględnienia słowa kluczowego _declspec (dllexport) w deklaracji funkcji.
Jeśli używasz kompilatora C ++, wyeksportuj funkcje z instrukcją extern .C. {} W swoim pliku nagłówkowym, aby zapobiec manipulowaniu nazwami.
Jeśli piszesz własną bibliotekę DLL, nie należy jej rekompilować, gdy jest ona ładowana do pamięci przez inną aplikację. Przed ponowną kompilacją biblioteki DLL upewnij się, że wszystkie aplikacje korzystające z tej konkretnej biblioteki DLL zostały wyładowane z pamięci. Zapewnia, że sama biblioteka DLL nie jest ładowana do pamięci. Możesz nie odbudować poprawnie, jeśli o tym zapomnisz, a Twój kompilator nie ostrzeże Cię.
Przetestuj biblioteki DLL za pomocą innego programu, aby upewnić się, że funkcja (i biblioteka DLL) działają poprawnie. Testowanie go za pomocą debugera kompilatora lub prostego programu w języku C, w którym można wywołać funkcję z biblioteki DLL, pomoże ci określić, czy możliwe trudności są nieodłącznie związane z biblioteką DLL lub LabVIEW.