Chiama la funzione dalla DLL?

Sono nuovo di C # e sto cercando di imparare l’uso di DLL. Sto cercando di avvolgere i miei oggetti in una DLL e quindi utilizzarlo nel mio programma.

public class Foo // its in the DLL { public int ID; public void Bar() { SomeMethodInMyProgram(); } } 

Così provo a comprimere questo a una DLL ma non posso, perché il compilatore non sa cosa sia SomeMethodInMyProgram ().

Mi piacerebbe usarlo come:

 class Program // my program, using DLL { static void Main(string[] args) { Foo test = new Foo(); test.Bar(); } } 

Aggiungi la DLL tramite la soluzione explorer – fai clic con il pulsante destro del mouse su riferimenti -> aggiungi riferimento quindi “Sfoglia” alla tua DLL, quindi dovrebbe essere disponibile.

Dipende dal tipo di DLL. È costruito in .NET? se è un codice non gestito, ecco un esempio, altrimenti la risposta di Rob funzionerà.

Esempio di dll C ++ non gestito:

 using System; using System.Runtime.InteropServices; 

Potrebbe essere necessario utilizzare DllImport

 [DllImport(@"C:\Cadence\SPB_16.5\tools\bin\mpsc.dll")] static extern void mpscExit(); 

o

 [DllImport("user32.dll", CharSet = CharSet.Unicode)] public static extern int MessageBox(IntPtr hWnd, String text, String caption, uint type); 

Quindi ognuno di questi è chiamato così:

 // a specific DLL method/function call mpscExit(); // user32.dll is Microsoft, path not needed MessageBox(new IntPtr(0), "Test", "Test Dialog", 0); 

è necessario caricare effettivamente la DLL nell’applicazione in fase di esecuzione, quindi la parte dynamic della DLL. È inoltre necessario il file di intestazione che definisce quali funzioni sono nella DLL in modo che il tuo compilatore sappia quali funzioni sono state definite. La mia conoscenza qui è basata sul C ++, quindi come funziona per C # Non sono sicuro, ma sarà qualcosa del genere …

Sono in ritardo per la festa qui, ma sto lasciando questa risposta per qualcuno che tira fuori i suoi capelli come me. Quindi, in sostanza, non avevo il lusso di VS IDE di fronte a questo problema. Stavo cercando di compilare il codice tramite cmdline usando csc. Per fare riferimento a una DLL, basta aggiungere il flag del compilatore / r: PathToDll / NameOfTheDll a csc.

Il comando sarebbe simile

csc / r: PathToDll / NameOfTheDll / out: OutputExeName FileWhichIsReferencingTheDll.cs

In FileWhichIsReferencingTheDll.cs aggiunge using namespace AppropriateNameSpace; per accedere alle funzioni (chiamando class.functionName se statico o creando un object della class e invocando la funzione sull’object).