Come catturare DllNotFoundException in C #? [chiuso]

0

questa domanda secondo me è semplice.

Come posso catturare una DllNotFoundException in C # in quanto è solo un attributo che alcuni metodi usano in questo modo:

[DllImport("NativeLib.dll")]    
private static extern void print_line(string str);

Quando vengono invocate queste funzioni? Come esempio la classe che contiene i metodi (suona strano per me perché è "statico")? O come voglio usare i metodi?

    
posta LaVolpe 18.06.2014 - 22:46
fonte

1 risposta

3

Nei costruttori statici c # per una classe non vengono eseguiti finché non si utilizza la classe per la prima volta. Quindi, se vuoi prendere DllNotFoundException devi farlo la prima volta che la classe viene utilizzata. Il modo più comodo per farlo è probabilmente incapsulare il puntatore della funzione esterna all'interno di una classe nidificata (temporanea), in questo modo, quindi la DLL esterna non viene caricata finché non viene effettuata la chiamata specifica:

public class MyOuterClass
{
    class ExternalDllSubClass
    {
        [DllImport("BananaquitFluffernutterOrWhatever.dll")]
        private static extern void print_line(string str);

        internal static void PrintLine (string str) {
            print_line(str);
        }
    }

    public void PrintLine(string str)
    {
        try
        {
            ExternalDllSubClass.PrintLine(str);
        }
        catch (DllNotFoundException e)
        {
            Debug.WriteLine(e.ToString());
        }
    }

Quindi imposta una pausa all'inizio della funzione esterna. (Oppure cattura l'eccezione DllNotFoundException in Visual Studio usando l'assistente delle eccezioni.)

Per ulteriori informazioni, consulta qui .

    
risposta data 19.06.2014 - 07:46
fonte

Leggi altre domande sui tag