Как исправить фатальную ошибку C1113: #USING не удалось на 'mylib.lib'
Вопрос
У меня есть проект, который использует C ++/CLI для реализации графического интерфейса и некоторой фоновой обработки для общения с датчиком. У меня есть все это работающие и много коммунальных материалов, которые мы используем для передачи датчика в .dll. Проблема в том, что я хотел бы объединить библиотеку в основной исполняемый файл, чтобы не беспокоиться о распределении .dlls.
У меня есть демонстрационный проект, который работает нормально, используя .lib, но когда я пытаюсь переключить корпус кода MANI, чтобы создать .LIB вместо .dll я получаю следующую ошибку:
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'
Немного гуглить предполагает, что это происходит, когда у вас не было применено переключатель MSIL, но он определенно там в библиотечном проекте.
У меня есть смесь управляемого и неуправляемого кода как в моем демонстрационном проекте, так и в реальной вещи, поэтому я действительно изо всех сил пытаюсь посмотреть, в чем проблема.
Любые предложения будут очень благодарны!
Решение
Я немного догадываюсь, но я подозреваю, что проект «MyTool» имеет проект «MyLib» как один из его «ссылок» («Project» Menu >> Свойства >> Общие свойства >> ссылки).
Когда вы измените тип проекта MyLib на LIB вместо DLL, вам нужно удалить «myLib» из ссылок на проект. Затем вы обновляете зависимости проекта от решения («Project» Menu >> «зависимости проекта ...»), чтобы MyTool зависит от MyLib.
Другие советы
Я также столкнулся с этим. Причина, по которой он провалился, заключалась в том, что я собирал свой родной/управляемый C ++ DLL для Target .net 4.0. И DLL, который я #Using был .NET 2.0 DLL. Таким образом, это не удалось, хотя пути и имена файлов идеально выстроились в линию. В этом случае сообщение об ошибке вообще не была помощи. Я решаю его, обновив независимый DLL до .NET 4.0. Так что обе сборки использовали одну и ту же фреймворк .NET.
Если вы ссылаетесь на смешанный режим (управляемый/нативный) DLL, вы можете получить эту ошибку. Который не должен, если проект использует CLR, даже если один из исходных файлов этого не делает. Но в любом случае, если это так, попробуйте удалить ссылку из проекта | Свойства | Общие свойства | Ссылки, а затем повторно его.