Mono: C chiama in gestione con COM Interop

1

Sto cercando di progettare una libreria gestita per implementare -quelli che sembrano essere- i plugin VST3 non gestiti. L'interfaccia del plugin VST3 è un'API basata su interfacce C / C ++ compatibile con COM (conteggio ref, HRESULT ecc.) - ma non COM (nessun reg, CLSID ecc.). Il punto di ingresso nel plugin è una funzione esportata (su Windows) che recupera una factory di classe (molto simile a COM). Da lì la sua comunicazione basata su interfaccia COM-compatibile.

Voglio implementare una soluzione Mono che funzioni su Windows, Mac e, se possibile, su Linux. Ho trovato una descrizione di come incorporare il Mono CLR nell'assieme assieme al codice C e al codice IL gestito. link Questo sembra un modo per ottenere da C al mondo gestito con mono - anche se sembra una soluzione pesante.

Quindi voglio utilizzare COM Interop (CCW / RCW) per eseguire il marshalling automatico delle interfacce VST3. Ho fatto una traccia di Windows / MS che ha funzionato (i problemi sono oltre questa discussione e non sono portatili), quindi se potessi riutilizzare quel codice, sarebbe fantastico. Ecco un esempio del factory degli oggetti: link

Ci sono un paio di domande che ho per questo disegno a cui vorrei avere risposta prima di continuare con lo sforzo.

  1. Questo disegno (incorpora CLR e COM Interop) funzionerebbe?
    La parte di incorporamento di cui sono abbastanza fiducioso, ma che ne dici di COM-Interop su Mac / Linux?
  2. Come funzionano le esportazioni di funzioni su Mac e Linux?
    L'applicazione host deve essere in grado di chiamare nel plug-in usando questa funzione C esportata.
  3. Dovrei scrivere un codice specifico per ogni piattaforma?
    Mi piacerebbe avere solo una base di codice con casi speciali minimi.
posta obiwanjacobi 19.09.2014 - 17:37
fonte

0 risposte

Leggi altre domande sui tag