Вы должны использовать Project + Project Dependencies, чтобы заставить это работать без / clr.Да, это не работает, если проект скомпилирован с / clr.Использование .lib для управляемого кода довольно необычно.Вы должны явно указать компоновщику, чтобы он связывал .lib вашего управляемого проекта.
Щелкните правой кнопкой мыши проект EXE, Свойства, Компоновщик, Ввод, Дополнительные зависимости.Предполагая, что оба проекта находятся в одном решении, введите это:
..\$(ConfigurationName)\mumble.lib
Где mumble - имя вашего управляемого проекта.Повторите эти действия для конфигурации выпуска.
Помните, что использование управляемого кода таким способом плохо масштабируется.Компилятор C ++ / CLI автоматически генерирует thunk для экспортируемой функции, который обеспечивает загрузку и инициализацию CLR перед вызовом управляемой функции.Это, однако, обходится дорого, я рассчитал его на скорости 640 наносекунд на звонок на своем ноутбуке, не считая затрат на инициализацию CLR.Использование COM является эффективным способом избежать таких затрат.Или вы можете самостоятельно разместить CLR, ищите CorBindToRuntimeEx ().