Учебники

DLL — Советы

Помните следующие советы при написании DLL —

Используйте правильное соглашение о вызовах (C или stdcall).

Помните о правильном порядке аргументов, передаваемых в функцию.

НИКОГДА не изменяйте размеры массивов и не объединяйте строки, используя аргументы, передаваемые непосредственно в функцию. Помните, что передаваемые вами параметры являются данными LabVIEW. Изменение размеров массива или строки может привести к сбою при перезаписи других данных, хранящихся в памяти LabVIEW. Вы МОЖЕТЕ изменить размер массивов или объединить строки, если вы передадите дескриптор массива LabVIEW или дескриптор строки LabVIEW и используете компилятор Visual C ++ или Symantec для компиляции вашей DLL.

При передаче строк в функцию выберите правильный тип строки для передачи. C или Паскаль или LabVIEW Строка Ручка.

Длина строк Паскаля ограничена 255 символами.

Строки C заканчиваются на NULL. Если ваша DLL-функция возвращает числовые данные в формате двоичной строки (например, через GPIB или последовательный порт), она может вернуть значения NULL как часть строки данных. В таких случаях передача массивов коротких (8-битных) целых чисел является наиболее надежной.

Если вы работаете с массивами или строками данных, ВСЕГДА передавайте буфер или массив, достаточно большой, чтобы хранить любые результаты, помещенные в буфер функцией, если вы не передаете их как дескрипторы LabVIEW, и в этом случае вы можете изменить их размер с помощью CIN. работает под компилятором Visual C ++ или Symantec.

Перечислите функции DLL в разделе EXPORTS файла определения модуля, если вы используете _stdcall.

Перечислите функции DLL, которые другие приложения вызывают в разделе EXPORTS файла определения модуля, или включите ключевое слово _declspec (dllexport) в объявление функции.

Если вы используете компилятор C ++, экспортируйте функции с помощью оператора extern .C. {} В заголовочном файле, чтобы предотвратить искажение имени.

Если вы пишете свою собственную DLL, вы не должны перекомпилировать DLL, пока DLL загружается в память другим приложением. Перед перекомпиляцией DLL убедитесь, что все приложения, использующие эту конкретную DLL, выгружены из памяти. Это гарантирует, что сама DLL не загружается в память. Возможно, вам не удастся восстановить правильно, если вы забудете об этом и ваш компилятор не предупредит вас.

Протестируйте свои DLL с другой программой, чтобы убедиться, что функция (и DLL) работают правильно. Тестирование с помощью отладчика вашего компилятора или простой C-программы, в которой вы можете вызывать функцию в DLL, поможет вам определить, являются ли возможные трудности присущими DLL или LabVIEW.