Самый простой способ сделать это - представить C # DLL в качестве COM-объекта, а затем создать его экземпляр из приложения C / C ++. См. MSDN пошаговое руководство.
В качестве альтернативы, если вы действительно хотите вызвать C ++ DLL из приложения C ++, вы можете создать смешанный режим C ++ / CLI.приложение, которое содержит как управляемый, так и неуправляемый код.Приложение C ++ может затем вызывать функции непосредственно из управляемой DLL C #.
Также см. «Обзор совместимости управляемого / неуправляемого кода» в MSDN.
РЕДАКТИРОВАТЬ: Без какой-либо дополнительной информации, чем "это не работает в C", я даже не знаю, какие из приведенных выше предложений вы пытались.Как я и предположил, я не уверен, что второй будет работать с прямым C (никогда не пробовал), но я не вижу причин, почему первый не будет.
В любом случае, быстрое и грязное исправление может бытьобернуть функции C # в C ++ DLL, которую вы затем вызываете из своего C-приложения.Убедитесь, что вы объявили любую функцию, которую хотите экспортировать из DLL C ++, как extern
, в противном случае их имена будут искаженными именами C ++, с которыми невозможно работать в C. Для получения дополнительной информации см. Здесь: http://www.parashift.com/c++-faq-lite/mixing-c-and-cpp.html