Pregunta

Tengo un proyecto que utiliza C ++/CLI para implementar una GUI y algún procesamiento de antecedentes para hablar con un sensor. Tengo todo funcionando y muchas de las cosas que usamos para comunicar el sensor se sienta en un .dll. El problema es que me gustaría combinar la biblioteca en el ejecutable principal para evitar tener que preocuparse por distribuir .dlls.

Tengo un proyecto de demostración que funciona bien usando un .lib, pero cuando intento cambiar el cuerpo del código Mani para producir un .lib en lugar de .dll obtengo el siguiente error:

1>------ Build started: Project: MyTool, Configuration: Debug Win32 ------
1>Compiling...
1>stdafx.cpp
1>.\stdafx.cpp : fatal error C1113: #using failed on 'c:\projects\MyTool\debug\MyLib.lib'

Un poco de Google sugiere que esto sucede cuando no ha aplicado el Switch MSIL, pero definitivamente está allí en el proyecto de la biblioteca.

Tengo una mezcla de código administrado y no administrado tanto en mi proyecto de demostración como en lo real, así que realmente estoy luchando por ver cuál es el problema aquí.

¡Cualquier sugerencia sería recibida muy agradecida!

¿Fue útil?

Solución

Supongo un poco, pero sospecho que el proyecto "MyTool" tiene el proyecto "MyLib" como una de sus "Referencias" (Menú "Proyecto" >> Propiedades >> Propiedades comunes >> Referencias).

Cuando cambia el tipo de proyecto MyLib a una LIB en lugar de una DLL, debe eliminar "MyLib" de las referencias del proyecto. Luego actualiza las dependencias del proyecto de la solución ("Proyecto" Menú >> "Dependencias del proyecto ...") para que MyTool dependa de MyLib.

Otros consejos

También me encontré con esto. La razón por la que estaba fallando fue porque estaba compilando mi DLL C ++ nativa/administrada para apuntar a .NET 4.0. Y el DLL que estaba #Using fue un .NET 2.0 DLL. Como tal, estaba fallando, a pesar de que las rutas y los nombres de archivos se alinearon perfectamente. En este caso, el mensaje de error no fue absolutamente sin ayuda. Lo resuelvo actualizando el DLL independiente a .NET 4.0. De modo que ambos ensamblados estaban usando el mismo marco .NET.

Si está vinculando a una DLL en modo mixto (administrado/nativo), puede obtener este error. Lo cual no debería si el proyecto usa CLR incluso si uno de los archivos de origen no. Pero de todos modos, si ese es el caso, intente eliminar la referencia del Proyecto | Propiedades | Propiedades comunes | Referencias y luego vuelva a administrarlo.

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