Pregunta

estoy manteniendo un proyecto VS2010, que tiene una serie de bibliotecas COM con referencias cruzadas. Estoy tratando de configurar el proyecto de tal manera que es edificable de una estación de trabajo al azar que tiene instalado VS2010. La estación de trabajo podría ser de 32 y 64 bits, por lo que si el proyecto de configuración I "registro de salida", la construcción fallará para construir en la máquina de 32 bits, ya que el 64 bits DLL no será posible cargar a llamar a DllRegisterServer.

Este es un ejemplo: biblioteca de tipos de referencias del proyecto de biblioteca de tipos B del proyecto A. Proyecto C referenciará el proyecto B mediante declaración siguiente:

#import "B.tlb"

Desde la biblioteca referencias A y B, cuando B.tlb se importa, los intentos del compilador a los tipos de cargas de A. Por lo tanto, si A no está registrado, la compilación fallará con:

error C4772: #import referenced a type from a missing type library ...

He intentado abrir B.tlb utilizando la aplicación Oleview, y es seguro que sólo se muestra el nombre de archivo correcto para referencia de la biblioteca A si se registra utilizando regsvr32.

Por lo tanto, mi pregunta aquí es: ¿hay alguna forma alternativa para que las referencias de biblioteca para resolver de forma eficaz, sin tener que registrarse TLB, sólo por poner todos los archivos en el mismo directorio de alguna manera, o colocar algún tipo de manifiesto? Por ejemplo, cambiar el nombre de la TLB para una biblioteca como .tlb o algo por el estilo.

¿Fue útil?

Solución

Trate importar el A.tlb hace referencia en primer lugar, o una lista en la importación de B.tlb usando la opción include ().

import las partes de la plataforma que planea usar si se puede evitar con lo que en otras referencias innecesariamente.

Otros consejos

Hay una buena opción: camino de añadir a los archivos .tlb a VC ++ Directorios -> Directorios Ejecutable Esto se suma a la ruta de la variable de entorno PATH, que será entregado al compilador. De acuerdo con esto: http://msdn.microsoft.com/en-us/library /sce74ah7.aspx todo .tlb se hace referencia en uno importado se buscan sólo en PATH y LIB.

La forma más sencilla es el lugar todos los archivos * .tlb en dir cuando se utilizan.

Depende de la configuración del proyecto. Copiar todos los archivos * .tlb en: $ (OutDir), $ (ProjectDir), dir dónde está el archivo con import, dir cuando se genera * .tlb etc.

Saludos, Mariusz

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