DLL - Советы
Помните следующие советы при написании DLL -
Используйте правильное соглашение о вызовах (C или stdcall).
Помните о правильном порядке аргументов, передаваемых функции.
НИКОГДА не изменяйте размер массивов или объединяйте строки, используя аргументы, переданные непосредственно функции. Помните, что передаваемые вами параметры являются данными LabVIEW. Изменение размеров массива или строки может привести к сбою из-за перезаписи других данных, хранящихся в памяти LabVIEW. Вы МОЖЕТЕ изменить размер массивов или объединить строки, если вы передаете LabVIEW Array Handle или LabVIEW String Handle и используете компилятор Visual C ++ или компилятор Symantec для компиляции вашей DLL.
При передаче строк в функцию выберите правильный тип строки для передачи. Строковый дескриптор C, Pascal или 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.