Alguém compilou a lib x264 usando o backend CLI para o compilador gcc?
Pergunta
Alguém compilou a lib x264 usando Back-end CLI para gcc compilador?(Compilado x264 em .net dll)
Solução
Você está usando recursos do C99?Caso contrário, Visual C++ com o /clr:pure
opção deve resolver o problema.Você precisará de um pouco de C++/CLI misturado para definir seus pontos de entrada que outros projetos .NET podem chamar, mas eles podem estar em arquivos completamente separados (você pode compartilhar arquivos de origem somente C inteiros com projetos nativos).
EDITAR:Guia básico para fazer isso funcionar:
- No Visual Studio, crie um projeto de biblioteca de classes C++/CLI
- Adicione todos os seus arquivos de origem C ao projeto
- Na configuração do projeto, defina o caminho de inclusão para que seus cabeçalhos sejam encontrados
- Na configuração do projeto, defina também "Uso do Common Language Runtime" como
/clr:pure
- No arquivo .cpp criado pelo novo assistente de projeto, adicione
#include
diretiva para os arquivos de cabeçalho que prototipam as funções que você deseja usar. - No
ref class
criado pelo novo assistente de projeto (no arquivo .cpp mencionado acima), adicione algumas funções (talvez funções estáticas) que chamam as funções da sua biblioteca C. - Compile, adicione este .DLL como referência do seu projeto C# e aproveite
Como dica, em vez de criar uma função de encaminhamento no ref class
para cada função na biblioteca, você pode querer criar funções que façam um trabalho útil (para a definição específica de útil para seu projeto específico) chamando várias funções de biblioteca.
Você provavelmente vai querer se sentir confortável com o marshal_as
modelo que é bom para converter .NET System::String
em cordas C e vice-versa.