Используете ли вы функции C99?Если нет, Visual C ++ с опцией /clr:pure
должен сделать свое дело.Вам понадобится немного C ++ / CLI, чтобы определить ваши точки входа, которые могут вызывать другие проекты .NET, но они могут быть в совершенно отдельных файлах (вы можете совместно использовать исходные файлы только для C с собственными проектами).
РЕДАКТИРОВАТЬ: Основное руководство по выполнению этой работы:
- В Visual Studio создайте проект библиотеки классов C ++ / CLI
- Добавьте все исходные файлы C в проект
- В Конфигурации проекта задайте путь включения, чтобы найти заголовки
- В Конфигурации проекта также установите «Использование общеязыковой среды выполнения» на
/clr:pure
- В .cppфайл, созданный мастером нового проекта, добавьте директиву
#include
для заголовочных файлов, которые являются прототипом функций, которые вы хотите использовать. - В
ref class
, созданном мастером нового проекта (в вышеупомянутом файле .cpp), добавьте некоторые функции (возможно, статические), которые вызывают функции вашей библиотеки C. - Скомпилируйте, добавьте этот .DLL как ссылку на ваш проект C # и наслаждайтесь
В качестве подсказки, вместо создания функции пересылки в ref class
для каждой функции в библиотеке, вы можете захотеть сделать функции, которые выполняют полезную работу (для конкретного определения, полезными для вашего конкретного проекта), вызывая группубиблиотечных функций.
Возможно, вы захотите освоиться с шаблоном marshal_as
, который хорош для преобразования .NET System::String
в строки C и обратно.