Come riparo irreversibile C1113 errore: #using fallito su 'MYLIB.LIB'
Domanda
Ho un progetto che utilizza C ++ / CLI per implementare un'interfaccia grafica e un po 'di elaborazione in background di parlare con un sensore. Ho ottenuto che tutto lavoro e un sacco di roba comunicazioni che usiamo per comunicare il sensore si siede in una DLL. Il problema è che mi piacerebbe combinare la libreria nel eseguibile principale per evitare di doversi preoccupare di distribuzione DLL.
Ho un progetto demo che funziona bene con un lib ma quando provo e passare il corpo di codice mani per produrre un lib invece di dll ottengo il seguente errore:
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 po 'di googling suggerisce questo accade quando non hai l'interruttore MSIL applicata, ma è sicuramente in là nel progetto biblioteca.
Ho un misto di codice gestito e non gestito sia il mio progetto demo e la cosa reale, quindi sono veramente fatica a vedere qual è il problema qui.
Ogni suggerimento sarà molto ben accetti!
Soluzione
sto indovinando un po ', ma ho il sospetto il progetto "MyTool" ha il progetto "MyLib", come uno dei suoi "riferimenti" (menu "Progetto" >> >> Proprietà Proprietà comuni >> Bibliografia).
Quando si cambia il tipo di progetto MyLib ad un LIB invece di una DLL, è necessario rimuovere "MyLib" dai riferimenti del progetto. È quindi aggiornare le dipendenze del progetto della soluzione ( "Progetto" Menu >> "Progetto Dipendenze ...") in modo che MyTool dipende MyLib.
Altri suggerimenti
Ho anche imbattuto in questo. Il motivo che stava venendo a mancare era perché mi stava compilando la mia DLL native / C ++ gestito, per indirizzare NET 4.0. E la DLL che stavo #using era una DLL NET 2.0. Come tale, stava fallendo, anche se i percorsi ei nomi dei file allineati perfettamente. In questo caso il messaggio di errore è stato assolutamente di nessun aiuto a tutti. Ho risolto aggiornando il DLL indipendente per .NET 4.0. In modo che entrambi i gruppi sono state utilizzando lo stesso framework .NET.
Se si collega a una modalità mista (gestito / native) DLL si può ottenere questo errore. Il che non si dovrebbe, se il progetto utilizza CLR anche se uno dei file di origine non lo fa. Ma comunque, se questo è il caso, quindi provare a rimuovere il riferimento da Project | Properties | | Proprietà comuni. Riferimenti e poi ri-aggiungerlo