Faz tempo que tenho essa curiosidade mas nunca achei nada a respeito (tambem nao procurei muito duro por isso)

 

Eu ate entendo de um codigo feito em C++ ser utilizado em Python ou Java ja que ambos seguem o mesmo paradigma, mas no caso de um codigo feito em C++ como ele pode ser utilizado em C, eh criado um header/lib especifica ou tem como compilar gerando objeto do codigo para C, sera que fui claro ?

 

Do modo que C++ pode ser acessivel pelo C o inverso tambem eh possivel ?

 

 

 

 

Exibições: 388

Respostas a este tópico

Sim, erro de digitacao

Daniel Grillo disse:
Não seria Portabilidade em vez de Protabilidade?

(erro de digitação corrigido)

Cara, eu começei a pensar e realmente foi uma boa dúvida hehehe... 

Portabilidade não necessariamente significa ligar qualquer biblioteca com qualquer c ou c++ .... e sim a capacidade de portar o código fonte que gerou essa lib para outras plataformas ... hoje em dia este problema está muito menor do que era antigamente quando tinhamos varios SOs e vários hardwares rodando isso ...

Nessa eu pessoalmente dou um pontinho há mais para o C++ por causa de sua natureza de abstração.

Do ponto de vista de linkedição (que é o que vocês estavam falando acima) ... na teoria é possivel ligar qualquer coisa com qualquer coisa ... por exemplo ... é totalmente possível usar LIBs de C ou C++ com C# ... o inverso não acredito ser possível ... existem também maneiras de ligar C e C++ com Java...

Antigamente se usava muito C ou C++, Pascal, Object Pascal com Clipper por exemplo ... saudades do velho DOS...

Com lixux ... ficou um pouco mais fácil brincar com essas coisas ... GCC é muito legal pra isso... o sistema de bibliotecas no lixux é bem feitinho e tal ... 

Toda integração é feita via um dicionário de entradas, cada uma contendo seus argumentos... com isso pode-se por exemplo abrir uma DLL, verificar as assinaturas que tem dentro e mapear as que se quer usar.

Uma coisa que me veio a cabeça agora é:

Como em C utilizar contrutores de Classe com Sobrecarga? alguém tem experiência com isso?



Alexandre Pereira (PACMAN) disse:

Portabilidade não necessariamente significa ligar qualquer biblioteca com qualquer c ou c++ .... e sim a capacidade de portar o código fonte que gerou essa lib para outras plataformas ... hoje em dia este problema está muito menor do que era antigamente quando tinhamos varios SOs e vários hardwares rodando isso ...

Nessa eu pessoalmente dou um pontinho há mais para o C++ por causa de sua natureza de abstração.

Do ponto de vista de linkedição (que é o que vocês estavam falando acima) ... na teoria é possivel ligar qualquer coisa com qualquer coisa ... por exemplo ... é totalmente possível usar LIBs de C ou C++ com C# ... o inverso não acredito ser possível ... existem também maneiras de ligar C e C++ com Java...

Antigamente se usava muito C ou C++, Pascal, Object Pascal com Clipper por exemplo ... saudades do velho DOS...

Com lixux ... ficou um pouco mais fácil brincar com essas coisas ... GCC é muito legal pra isso... o sistema de bibliotecas no lixux é bem feitinho e tal ... 

Toda integração é feita via um dicionário de entradas, cada uma contendo seus argumentos... com isso pode-se por exemplo abrir uma DLL, verificar as assinaturas que tem dentro e mapear as que se quer usar.

Uma coisa que me veio a cabeça agora é:

Como em C utilizar contrutores de Classe com Sobrecarga? alguém tem experiência com isso?

 

Não quero iniciar uma "flamewar", mas, não tenho saudades do limitado DOS, e espero que "lixux", acima seja mais um erro de "catilografia".

 

Portabilidade é como você descreveu, mas se não tiver acesso ao código fonte, não adianta...

 

Quanto à sua questão:

Em C não temos nem Classes (apenas structs), nem construtores nem sobrecarga, a nao ser que se use um esquema com enum, struct e definição de tipos (como parte da struct e algumas macros).

 

*Em tese*, basta gerar um arquivo objeto (adiocionado ou não a uma biblioteca), e ligar ao programa principal, mas como dito por PACMAN abaixo, isso não é portabilidade.

Opa, resposta diretamente à questão original, não como ficará a ordem...

Oi Johnny ,,,

Então ... eu sei que em C não temos classes. programo em C há pelo menos 15 anos ... comecei quando tive acesso aos primeiros Microprocessadores de 16 Bits ... hehehe ... o que eu quis colocar é:

Toda LIB tem um dicionário de acesso... métodos, funções, etc... como fica uma lib feita em C++ com um determinado construtor e etc... qual seria o workarround para acessar estas classes e seus métodos e funções como métodos e funções, numa estrutura procedural e não orientada a objetos ... e usar essa LIB em C?

Entendeu?

OBS: No Flamewars... OS x OS podemos fazer algo pessoalmente e de preferência com muita cerveja ...



Johnny Chaves disse:


Alexandre Pereira (PACMAN) disse:

Portabilidade não necessariamente significa ligar qualquer biblioteca com qualquer c ou c++ .... e sim a capacidade de portar o código fonte que gerou essa lib para outras plataformas ... hoje em dia este problema está muito menor do que era antigamente quando tinhamos varios SOs e vários hardwares rodando isso ...

Nessa eu pessoalmente dou um pontinho há mais para o C++ por causa de sua natureza de abstração.

Do ponto de vista de linkedição (que é o que vocês estavam falando acima) ... na teoria é possivel ligar qualquer coisa com qualquer coisa ... por exemplo ... é totalmente possível usar LIBs de C ou C++ com C# ... o inverso não acredito ser possível ... existem também maneiras de ligar C e C++ com Java...

Antigamente se usava muito C ou C++, Pascal, Object Pascal com Clipper por exemplo ... saudades do velho DOS...

Com lixux ... ficou um pouco mais fácil brincar com essas coisas ... GCC é muito legal pra isso... o sistema de bibliotecas no lixux é bem feitinho e tal ... 

Toda integração é feita via um dicionário de entradas, cada uma contendo seus argumentos... com isso pode-se por exemplo abrir uma DLL, verificar as assinaturas que tem dentro e mapear as que se quer usar.

Uma coisa que me veio a cabeça agora é:

Como em C utilizar contrutores de Classe com Sobrecarga? alguém tem experiência com isso?

 

Não quero iniciar uma "flamewar", mas, não tenho saudades do limitado DOS, e espero que "lixux", acima seja mais um erro de "catilografia".

 

Portabilidade é como você descreveu, mas se não tiver acesso ao código fonte, não adianta...

 

Quanto à sua questão:

Em C não temos nem Classes (apenas structs), nem construtores nem sobrecarga, a nao ser que se use um esquema com enum, struct e definição de tipos (como parte da struct e algumas macros).

 

Certo, usei portabilidade por ignorância mesmo, não sabia o termo que definiria, agora trabamos com linkedicão.

Mas como isso é feito para C++, Python ou Java, por exemplo:

 

Faco uma funcão em C para calcular qualquer coisa (return a+b), para compilar com GCC gerando somente objeto uso: gcc -c arquivo.c -o arquivo.o

 

Como usar essa funcão em outra linguagem, +- na prática ?

 

 



Francis David Donato Pereira disse:

Certo, usei portabilidade por ignorância mesmo, não sabia o termo que definiria, agora trabamos com linkedicão.

Mas como isso é feito para C++, Python ou Java, por exemplo:

 

Faco uma funcão em C para calcular qualquer coisa (return a+b), para compilar com GCC gerando somente objeto uso: gcc -c arquivo.c -o arquivo.o

 

Como usar essa funcão em outra linguagem, +- na prática ?

 

Faz pergunta difícil não que eu não estudei :) .

Nunca pensei ( ou precisei )disso, quando uso C é só C, quando uso C++, os próprios cabeçalhos (.h) já cuidam das definições do que em C, depois da sua pergunta fui testar, deve haver uma forma, mas não consegui, enquanto permance uma "questão acadêmica" pode-se procurar com calma, se surgir a necessidade real, temos que apelar (google, koders...).

 

 

Pessoal,

 

Depois de perder algumas noites de sono pensando em como a peripécia de usar métodos de uma linguagem OOP em uma linguagem procedural, eu fui fuçar na net... achei este post em um blog bem interessante:

 

http://blog.eikke.com/index.php/ikke/2005/11/03/using_c_classes_in_c

 

Acho que responde à todas as questões pertinentes à integração que comentamos aqui ...

 

Não testei e acho que nem vou testar... mas o segredo está em se acessar a classe como um ponteiro, pelo pouco que eu entendi ... ahhh e polimorfismo esquece!

 

Notem também que não dá pra compilar de forma humana sem um bom MakeFile ... e viva o Visual Studio ... Microsoft RULEZ! Quando tiver um tempo vou tentar rodar o exemplo do site do Ikke no VS ...

 

Por enquanto é isso pessoal ...

 

[]s PACMAN!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço