Pregunta

OK, aquí está mi rareza para hoy.
Creo extensiones a un programa C ++ existente que no tengo acceso al código fuente.

Escribo DLL estándar C / C ++ y uso IJW para llamar a C # DLLS. No he hecho esto en un tiempo, pero ahora estoy tratando de hacer que uno trabaje en la ventana 7. Recibo un error (error 0000036b1, no estoy seguro si es un número de error interno a la aplicación, o un error de Windows. < / p>

Tengo múltiples PC virtuales (XP y Windows 7), la DLL funciona bien en XP. También funciona en Windows 7 si se instala Visual Studio 2008. Pero no en una Windows 7 limpia con solo el paquete de Microsoft Visual C ++ 2008 SP1 redistribuible instalado.

Puedo compilar y ejecutar dll recto C ++ en la caja limpia de Windows 7 siempre que el interruptor del compilador esté configurado en MT [D], pero si configuro el interruptor / CLR, debo cambiarlo a MD [D] y luego Falla en la caja limpia de Windows 7. Pero, no en la caja de Windows 7 con Visual Studio 2008 instalado.

¿Alguna idea de lo que necesito para instalar en la caja limpia? (Aparte de VS, por supuesto ;-))

Gracias por su ayuda.

l. Lee Saunders

¿Fue útil?

Solución

OK, esto es malo.Alguien señaló que los archivos que necesitaba fueron las versiones de depuración y eso significaba que había compilado mi DLL en modo de depuración.Sugirió que intento el modo de liberación.

Por lo tanto, con una nueva copia de mi PC virtual que ejecuta Windows 7 Basic (este, el 35 C ++ REDIST instalado), copié sobre mi DLL original (el Modo de depuración) solo para verificar que esta PC virtual tenía el problema.Sí, lo hizo.

Luego copié sobre un DLL que se compiló en modo de liberación.Funcionó.

OK, oficialmente quiero golpear mi cabeza en una pared.

Gracias por su tiempo.

l.Lee Saunders

Otros consejos

Necesitará tanto el tiempo de ejecución de VC ++ Redistribuible (que tiene un código de soporte para C ++ nativo) y el .NET Framework 3.5 (que tiene código de soporte para C ++ / CLI).

.NET 3.5 debe venir con Win7, pero VS2008 SP1 viene con .NET 3.5 SP1, por lo que recomendaría instalar todas las actualizaciones .NET de Windows Update.

Ahora me siento mal.No fue completamente una instalación limpia de Windows 7. Necesitaba instalar la aplicación para las que estoy escribiendo extensiones.El último parche de los programas instaló el paquete Visual C ++ 2008 SP1 redistribuible.

Bueno, decidí intentar crear un proyecto de instalación de un poco de Bitty Bitty C ++ / CLI DLL y le dije que incluyera dependencias.Tiró en 2 archivos:

C: \ Archivos de programa \ Archivos comunes \ Merge Modules \ Microsoft_VC90_DebugCRT_X86.MSM C: \ Archivos de programa \ Archivos comunes \ Merge Modules \ Poly_9_0_microsoft_vc90_debugccrt_x86.msm

Corrí la instalación y la aplicación pequeña trabajó.Copié manualmente sobre mis DLLs y yo y he aquí que trabajaron ahora.Así que para hacerlo para trabajar, necesitaba estos dos archivos.

¿Por qué?¿Y por qué no se incluyeron en el paquete REDIST?

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