Управляемая оболочка C ++ вокруг статической библиотеки - PullRequest
0 голосов
/ 08 февраля 2012

Я использую Visual Studio, .Net и Windows.

Я пишу обертку вокруг статической библиотеки. Проблема, с которой мне нужна помощь - это сообщение об ошибке:

ССЫЛКА: фатальная ошибка LNK1104: не удается открыть файл 'Unmanaged.lib'

"Неуправляемый" - это класс в моего проекта, но это не имя проекта.

Я создал проект библиотеки классов C ++ CLR. В нем я создал управляемый класс и неуправляемый класс. Неуправляемый класс вызывает статическую библиотеку. Управляемый класс использует неуправляемый класс. Компилятор и компоновщик, похоже, пытаются создать библиотеку для неуправляемого класса, но это не то, что должно произойти.

Могу ли я иметь неуправляемый класс (который используется только управляемым классом) в проекте библиотеки управляемых классов? Я полагаю, что так, но если я ошибаюсь, это сэкономит мне время, чтобы понять, что то, что я пытаюсь сделать, не сработает.

1 Ответ

1 голос
/ 23 марта 2012

Я только начал писать управляемый код в первый раз, и у меня было достаточно времени, чтобы понять, как использовать мою библиотеку неуправляемых классов. Но я нашел один способ сделать это. И да, вы можете иметь управляемые и неуправляемые классы в одной библиотеке. Сложность в моем случае заключается в том, что мой неуправляемый код компилируется только в VS2008, в то время как управляемый код, в который я должен его поместить, компилируется только с VS2010. Итак, вот что я сделал:

  1. встроил мой неуправляемый код, как обычно, в статическую библиотеку с использованием VS2008. Это производит MyUnmanagedClasses.lib

  2. В VS 2010 щелкните правой кнопкой мыши / Свойства (управляемого) проекта, где я хочу использовать неуправляемый код

  3. Выбор компоновщика / ввода

  4. в первом поле «Дополнительные зависимости» добавьте MyUnmanagedClasses.lib

  5. Выбрать компоновщик / General

  6. в поле «Дополнительные каталоги библиотек» добавьте каталог, в котором находится MyUnmanagedClasses.lib

  7. Используйте ваши неуправляемые классы, как обычно!

Примечание: НЕ добавляйте сами неуправляемые проекты в ваше решение - это то, что я сначала попробовал, и оно не сработало; просто ссылки в библиотеках, как я уже говорил выше.

...