Pergunta

Eu tenho o código fonte para uma DLL do Windows que é escrito em C ++ e usa Visual Component Library. Agora, a minha tarefa é a porta que para Linux, mas eu não tenho o código fonte para o próprio VCL, ou qualquer tipo de documentação (e eu nunca trabalhei com Borland C ++; em meus dias do Windows eu usei MFC).

Isso não deve ser tão difícil, já que minha DLL não tem qualquer GUI: tanto quanto eu posso ver, ele usa principalmente VCL para multithreading. Corri para uma classe que herda de TThread e é aí que eu fiquei preso. Eu fiz alguma pesquisa na Internet, mas não encontrou nenhuma documentação para VCL até agora. Gostaria de evitar a compra de um livro sobre Borland C ++ Builder, porque eu não tenho tempo para esperar por ele para chegar a partir da Amazon. Eu não posso pensar em comprar o pacote para Windows, porque no trabalho eu só tenho uma caixa de Linux.

Todas as sugestões?

Foi útil?

Solução

A VCL está documentado no da CodeGear web site . TThread em particular, é descrito aqui .

Eu encontrei a documentação sobre os componentes relacionados ao segmento do VCL para ser bastante escassa. Este site tem uma melhor descrição muito do Delphi / VCL abordagem para threading.

Outras dicas

As bibliotecas Boost, e wxWidgets, irá proporcionar análogos às classes VCL.

Você deve estar ciente de que o VCL usado por C ++ Builder é inteiramente escrito em Delphi / ObjectPascal. c ++ builder aplicativos envolvem c ++ fazendo uso de bibliotecas baseadas em delphi.

O projeto de código aberto FreePascal / Lázaro engenharia reversa a maior parte do VCL (quase todo o material não-visual e grande parte do material visual) e roda nativamente no Linux. O material VCL compatível non-visual é conhecida como a "Biblioteca de Componentes gratuito" ( "FCL") http://www.freepascal.org/ http://www.freepascal.org/fcl/fcl.var

A fonte da implementação TThread na FCL deve ser fácil de encontrar.

Uma opção seria a reescrever em FreePascal, onde a linguagem mudaria para ObjectPascal mas chamadas para a VCL e uso de componentes VCL seria praticamente idênticos.

Outra opção poderia ser a porta para c ++ em Linux e de alguma forma fazer uso de VCL do FreePascal de c ++. Eu não tenho certeza do praticidade / viabilidade de isso. Alguém em fóruns de FreePascal deve ser capaz de ajudar a responder a isso.

Assim, uma outra opção como alguém mencionou seria apenas reescrever usando algum outro biblioteca de threading.

Você pode baixar a sua livre compilador e tentar experimentar com ele. Deve ser possível executá-lo sob VINHO, pelo menos. Talvez mesmo sob FreeDOS.

Deve estar relacionada com a classe TThread em Delphi / Kylix. Isso é outra alternativa para explorá-la. Eu acredito que os métodos mais importantes foram executados () e sync (), mas tem sido as idades desde que eu usei.

No entanto, se você pretende porta limpa o código para Linux, ele pode ajudar a re-implementar a classe TThread mesmo, usando algumas bibliotecas de impulso ou algo assim.

Muitos anos atrás, a Borland lançou uma versão de seu IDE para Linux, comercializados como Kylix . Eu não tenho certeza se ele ainda é suportado, mas que pode ser o caminho de menor resistência, para você.

Existem várias bibliotecas que fornecem estruturas como enfiar por exemplo Impulso (www.boost.org) ou ACE ( http: //www.cs. wustl.edu/~schmidt/ACE.html )

Deve ser razoavelmente fácil de portar o código para usar uma dessas infra-estruturas de encadeamento.

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