Domanda

Come possiamo esportare C # i metodi?

ho una dll e voglio usare i suoi metodi nel linguaggio Python con il modulo ctypes. Perché ho bisogno di usare il modulo ctypes, ho bisogno di esportare i metodi C # per loro di essere visibili in Python.

Quindi, come posso esportare i metodi C # (come fanno in C ++)?

È stato utile?

Soluzione

Contrariamente alla credenza popolare, questa è possibile.
Vedere qui .

Altri suggerimenti

Con la normale applicazione Python ( "CPython"), non è possibile, almeno non direttamente.

Si potrebbe scrivere wrapper C nativi intorno alle nostre C # utilizzando metodi C ++ / CLI , e chiamare questi involucri da Python.

In alternativa, si potrebbe provare a IronPython . Questo consente di eseguire codice Python e chiamare il codice in qualsiasi linguaggio .NET, tra cui C #.

Non è possibile. Se avete bisogno di esportazioni DLL è necessario usare il linguaggio C ++ / CLI. Ad esempio:

public ref class Class1 {
public:
  static int add(int a, int b) {
      return a + b;
  }
};

extern "C" __declspec(dllexport) 
int add(int a, int b) {
  return Class1::add(a, b);
}

La classe può essere scritto in C # pure. Il compilatore C ++ / CLI emette un thunk speciale per l'esportazione che assicura che il CLR viene caricato e l'esecuzione passa alla modalità gestita. Questo non è esattamente veloce.

Scrittura [ComVisible (true)] il codice in C # è un'altra possibilità.

(Questo potrebbe non essere più rilevante in quanto SLaks ha trovato che puntano ingegnoso, ma lascio una versione modificata per riferimento ...)

Il modo "normale" di esporre .NET / C # oggetti di codice non gestito (come Python) è quello di creare un wrapper COM-callable per il C # DLL (assembly .NET), e chiamare che utilizzando il supporto COM / OLE di Python. Per creare il wrapper COM-callable, utilizzare le utilità della riga di comando tlbexp e / o regasm.

Ovviamente, però, questo non fornisce le API / DLL in stile C che puntano SLaks' fa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top