DLL - Suggerimenti
Tenere a mente i seguenti suggerimenti durante la scrittura di una DLL:
Utilizzare la convenzione di chiamata appropriata (C o stdcall).
Essere consapevoli del corretto ordine degli argomenti passati alla funzione.
Non ridimensionare MAI array o concatenare stringhe utilizzando gli argomenti passati direttamente a una funzione. Ricorda, i parametri che passi sono dati di LabVIEW. La modifica delle dimensioni dell'array o della stringa può provocare un arresto anomalo sovrascrivendo altri dati archiviati nella memoria di LabVIEW. È POSSIBILE ridimensionare gli array o concatenare stringhe se si passa un LabVIEW Array Handle o LabVIEW String Handle e si utilizza il compilatore Visual C ++ o il compilatore Symantec per compilare la DLL.
Durante il passaggio di stringhe a una funzione, selezionare il tipo corretto di stringa da passare. String Handle in C o Pascal o LabVIEW.
Le stringhe Pascal sono limitate a 255 caratteri di lunghezza.
Le stringhe C terminano con NULL. Se la funzione DLL restituisce dati numerici in un formato di stringa binaria (ad esempio, tramite GPIB o la porta seriale), potrebbe restituire valori NULL come parte della stringa di dati. In questi casi, il passaggio di array di interi brevi (8 bit) è più affidabile.
Se stai lavorando con array o stringhe di dati, passa SEMPRE un buffer o un array abbastanza grande da contenere i risultati inseriti nel buffer dalla funzione a meno che non li passi come handle di LabVIEW, nel qual caso puoi ridimensionarli usando CIN funzioni in Visual C ++ o compilatore Symantec.
Elenca le funzioni DLL nella sezione EXPORTS del file di definizione del modulo se stai utilizzando _stdcall.
Elenca le funzioni DLL che altre applicazioni chiamano nella sezione EXPORTS del file di definizione del modulo o per includere la parola chiave _declspec (dllexport) nella dichiarazione della funzione.
Se usi un compilatore C ++, esporta le funzioni con l'istruzione extern .C. {} Nel tuo file di intestazione per evitare alterazioni del nome.
Se stai scrivendo la tua DLL, non dovresti ricompilare una DLL mentre la DLL è caricata in memoria da un'altra applicazione. Prima di ricompilare una DLL, assicurarsi che tutte le applicazioni che utilizzano quella particolare DLL vengano scaricate dalla memoria. Assicura che la DLL stessa non venga caricata in memoria. Potresti non riuscire a ricostruire correttamente se lo dimentichi e il tuo compilatore non ti avvisa.
Verifica le tue DLL con un altro programma per assicurarti che la funzione (e la DLL) si comportino correttamente. Testarlo con il debugger del tuo compilatore o un semplice programma C in cui puoi chiamare una funzione in una DLL ti aiuterà a identificare se possibili difficoltà sono inerenti alla DLL o relative a LabVIEW.