Domanda

Sto cercando di scrivere una DLL in modalità mista, chiamiamola 'Client', per sostituire alcune classi non gestite con i loro equivalenti gestiti. Tutto funziona bene sulla mia macchina personale, ma quando posso controllare il codice sorgente in, la nostra macchina build non generare il progetto. Esso non riconosce le classi gestite che sto usando da un altro DLL, chiamato 'core'.

Credo che il problema ha a che fare con le intestazioni precompilate. Ecco perché:

Per utilizzare le classi da 'Core', ho aggiunto un riferimento al progetto 'Core' nel progetto 'Client'. Se rimuovo questo riferimento e quindi creare il progetto sulla mia macchina personale, funziona ancora. Il CLR PCH non ricompilare dopo aver rimosso il riferimento, però. Se io ricompilare il PCH CLR, e quindi compilare il progetto, non riesce con gli stessi errori che ottengo sul sistema di compilazione: le classi gestite non vengono riconosciuti.

Mi sembra che le classi gestite da DLL si importa sono definiti nella intestazione precompilata. Non sono stato in grado di verificare questo, ma questo è il migliore congettura che ho. Qualcuno ha qualche intuizione che possono gettare su questo tema? Sono i riferimenti del progetto in misto DLL risolti mettendo ganci nella PCH gestito?

Procedura per riprodurre

Di seguito non ha senso per me:

  1. Get client per costruire.
  2. Rimuovere il riferimento dal client al Nucleo. Compilare client. Client costruisce ANCORA. Questo non è previsto.
  3. Ricompilare PCH client, quindi compilare client. Compilare client fallisce: le classi in 'Core' sono indefiniti. Questo è il comportamento previsto.
  4. Aggiungi riferimento al core, la compilazione. Client di compilazione non riesce per lo stesso motivo. Questo non è previsto
  5. Ricompilare PCH client, quindi compilare client. Cliente compila bene.

La mia conclusione da questo esperimento è che i riferimenti sono inseriti nel progetto tramite intestazioni precompilate, e che qualcosa è rotto con il modo in cui funziona, almeno sulla nostra macchina di build.

È stato utile?

Soluzione

C'è un altro modo per aggiungere riferimenti a un / dll modalità mista gestito in C ++ / CLI - è di aggiungere #using Core.dll al Cliente. Questo potrebbe risolvere il tuo problema di generazione.

Altri suggerimenti

Non può funzionare così possibile, perché non è necessario utilizzare un'intestazione precompilata.
Tutto quello che un PCH non fa altro che consentono di velocizzare la compilazione.
Non fa nulla di speciale con i riferimenti .....

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