Pergunta

Eu quero escrever uma biblioteca que será vinculado dinamicamente a partir de outros programas em execução em sistemas operacionais modernos como Windows, Linux e OS / X (ou seja, ele vai ser implantado como um .dll ou módulo .so).

O que é o idioma mais adequado, nesse caso? Devo ficar com C simples? Ou seja C ++ também ok?

Foi útil?

Solução

Você pode usar C ou C ++ para a implementação, mas eu recomendaria para definir a interface em puro C. Será muito mais fácil integrar.

Outras dicas

A dificuldade com a criação de uma biblioteca C ++ distribuídos em forma binária é que seus clientes - os usuários da biblioteca - são normalmente obrigados a usar o mesmo compilador C ++ como você criou a biblioteca com. Isto pode ser problemático se você quiser manter-se atualizado e eles não, ou se eles querem manter-se atualizado e você não. Se você lidar na fonte, isso é menos de um problema, desde que o seu C ++ é suficiente portátil para permitir que ele seja usado por todos os compiladores seus clientes usam.

Se o código pode ser usado a partir de C, eu provavelmente código para uma interface C. Alternativa, fornecer duas interfaces - a interface nativa C ++ e uma interface C. Mas isso é mais trabalho do que apenas uma interface C. Por outro lado, pode haver benefícios de um C ++ de interface (talvez usando iteradores STL, etc) e que poderia influenciar sua decisão.

Eu também diria que C é o menor denominador comum. Você sempre tem a opção de escrever um wrapper C ++ para a biblioteca core se isso se integra melhor com o aplicativo de chamada.

Eu diria que C é a mais previsível portátil, mas C ++ é factível.

Considere o fator de menor denominador comum e fazendo os consumidores de suas bibliotecas de tomar as decisões que são melhores para eles. A construção de extern c provavelmente ainda confunde algumas pessoas e você quer sua biblioteca de viajar para longe e atingir o maior público. Definitivamente fazer as interfaces C puro. C ++ é muito bem desde que você evite alguns dos cantos mais escuros (como STL). C é o mais nenhum bar portátil. Criação de bibliotecas para todas as plataformas disponíveis não é pouca coisa por isso não deixe de dar uma olhada aqui para algumas dicas. Você também pode querer considerar o uso de autoconf e similares.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top