DLL - Astuces
Gardez à l'esprit les conseils suivants lors de l'écriture d'une DLL -
Utilisez la convention d'appel appropriée (C ou stdcall).
Soyez conscient de l'ordre correct des arguments passés à la fonction.
NE JAMAIS redimensionner les tableaux ou concaténer des chaînes en utilisant les arguments passés directement à une fonction. N'oubliez pas que les paramètres que vous transmettez sont des données LabVIEW. La modification de la taille des tableaux ou des chaînes peut entraîner un blocage en écrasant d'autres données stockées dans la mémoire LabVIEW. Vous POUVEZ redimensionner des tableaux ou concaténer des chaînes si vous passez un descripteur de tableau LabVIEW ou un descripteur de chaîne LabVIEW et que vous utilisez le compilateur Visual C ++ ou Symantec pour compiler votre DLL.
Lorsque vous passez des chaînes à une fonction, sélectionnez le type de chaîne à transmettre. C ou Pascal ou LabVIEW string Handle.
Les chaînes Pascal sont limitées à 255 caractères.
Les chaînes C sont terminées par NULL. Si votre fonction DLL renvoie des données numériques dans un format de chaîne binaire (par exemple, via GPIB ou le port série), elle peut renvoyer des valeurs NULL dans le cadre de la chaîne de données. Dans de tels cas, la transmission de tableaux d'entiers courts (8 bits) est la plus fiable.
Si vous travaillez avec des tableaux ou des chaînes de données, transmettez TOUJOURS un tampon ou un tableau suffisamment grand pour contenir tous les résultats placés dans le tampon par la fonction à moins que vous ne les transmettiez en tant que poignées LabVIEW, auquel cas vous pouvez les redimensionner à l'aide de CIN fonctions sous Visual C ++ ou compilateur Symantec.
Répertoriez les fonctions DLL dans la section EXPORTS du fichier de définition de module si vous utilisez _stdcall.
Répertoriez les fonctions DLL que d'autres applications appellent dans la section EXPORTS du fichier de définition de module ou pour inclure le mot clé _declspec (dllexport) dans la déclaration de fonction.
Si vous utilisez un compilateur C ++, exportez les fonctions avec l'instruction extern .C. {} Dans votre fichier d'en-tête afin d'éviter toute modification des noms.
Si vous écrivez votre propre DLL, vous ne devez pas recompiler une DLL pendant que la DLL est chargée dans la mémoire par une autre application. Avant de recompiler une DLL, assurez-vous que toutes les applications utilisant cette DLL particulière sont déchargées de la mémoire. Il garantit que la DLL elle-même n'est pas chargée dans la mémoire. Vous pouvez ne pas reconstruire correctement si vous oubliez cela et que votre compilateur ne vous avertit pas.
Testez vos DLL avec un autre programme pour vous assurer que la fonction (et la DLL) se comportent correctement. Le tester avec le débogueur de votre compilateur ou un simple programme C dans lequel vous pouvez appeler une fonction dans une DLL vous aidera à identifier si d'éventuelles difficultés sont inhérentes à la DLL ou à LabVIEW.