Pregunta

Estoy tratando de agregar un COM DLL VC6 a nuestra solución VS2010RC C #. La DLL se compila con las herramientas VC6 para crear una versión x86 y fue compilado con las herramientas VC7 Cruz-plataforma para generar una DLL VC7.

La versión x86 de la Asamblea funciona bien siempre y cuando la plataforma # del proyecto de C consumir se establece en x86. No importa si el x64 o la versión x86 de la DLL es en realidad registradas. Funciona con ambos. Si la plataforma está en 'Cualquier CPU recibo una BadImageFormatException de la carga de la Interop.<name>.dll.

En cuanto a la versión de 64 bits, no puedo incluso conseguir el proyecto de construcción. Recibo el error tlbimp:

  

TlbImp: TI0000 error: Un solo válida tipo de máquina compatible con el   biblioteca de tipo de entrada debe ser especificado.

Alguien ha visto a este problema?

EDIT:

He hecho mucho más la excavación en este tema y que esto puede ser un error de Visual Studio. Tengo una solución limpia. Traigo en mi COM ensamblado con el lenguaje agnóstico 'Cualquier CPU seleccionada. La arquitectura de procesos de la DLL de interoperabilidad resultante es x86 en lugar de MSIL.

Puede tener que realizar la interoperabilidad con la mano por ahora a conseguir que esto funcione.

Si alguien tiene otra sugerencia que me haga saber.

¿Fue útil?

Solución

Este problema se puede resolver mediante la apertura del archivo csproj y añadiendo el siguiente nodo a cualquiera de los '(Configuración) | Cualquier CPU' nodos que faltan que:

<PlatformTarget>AnyCPU</PlatformTarget>

Si este nodo no está presente TlbImp será por defecto x86 y causar problemas.

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