Кто-нибудь скомпилировал lib x264 с использованием CLI backend для компилятора gcc?
Вопрос
Кто-нибудь скомпилировал lib x264 с использованием Серверная часть CLI для gcc компилятор?(Скомпилирован x264 в .net dll)
Решение
Используете ли вы функции 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 и обратно.