Pregunta

Estoy tratando de escribir un archivo DLL de modo mixto, vamos a llamarlo 'Cliente', para reemplazar algunas clases no administrados con sus equivalentes administrados. Todo funciona bien en mi máquina personal, pero cuando puedo comprobar el código fuente en, nuestra máquina de construcción no va a construir el proyecto. No reconoce las clases administradas que estoy usando desde otro archivo DLL, llamado 'Core'.

Creo que el problema tiene que ver con los encabezados precompilados. He aquí por qué:

Para utilizar las clases de 'Core', he añadido una referencia al proyecto 'Core' en el Proyecto 'Cliente'. Si quito esta referencia y luego construir el proyecto en mi máquina personal, que todavía funciona. El CLR PCH no vuelva a compilar después de la eliminación de la referencia, sin embargo. Si recompilar el PCH CLR, y luego compilar el proyecto, se produce un error con los mismos errores que consigo en la construcción de la máquina: las clases administradas no se reconocen.

Me parece que las clases administradas desde DLL de importar se definen en el encabezado precompilado. No he podido verificar esto, pero esa es la mejor estimación que tengo. ¿Alguien tiene alguna idea de que pueden arrojar sobre este tema? Son referencias de proyectos en Mixta DLL resueltos por poner ganchos en el PCH conseguido?

Pasos para reproducir

La siguiente no tiene sentido para mí:

  1. Obtener cliente para construir.
  2. quitar la referencia del cliente al núcleo. Compilar cliente. Cliente todavía se acumula. Esto no se espera.
  3. Vuelva a compilar el PCH cliente, a continuación, compilar Client. Compilar el Cliente no: las clases de 'núcleo' no están definidos. Este es el comportamiento esperado.
  4. Agregar referencia para Core, compilar. Cliente compilador falla por la misma razón. No se espera
  5. Vuelva a compilar el PCH cliente, a continuación, compilar Client. Cliente compila bien.

Mi conclusión de este experimento es que las referencias se insertan en el proyecto a través de los encabezados precompilados, y que algo se rompe con la forma en que esto funciona, al menos en nuestra máquina de construcción.

¿Fue útil?

Solución

Hay otra forma de agregar referencias a un archivo DLL modo administrado / mixta en C ++ / CLI - es añadir #using core.dll al cliente. Esto podría resolver su problema de acumulación.

Otros consejos

No se puede trabajar así ¿verdad, ya que no es necesario utilizar un encabezado precompilado.
Todo lo que un PCH hace es permitir a acelerar la construcción.
No sirve de nada especial con referencias .....

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top