EFerneda 0 Denunciar post Postado Novembro 28, 2010 Sou novo no forum e também não conheço NADA de C++, mas estou precisando chamar uma rotina que está em C++ a partir de um programa em C. Estou usando o Visual Studio 2008. Alguém poderia me dar uma dica se isso é possível e, se for possível, como fazer ? Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Novembro 29, 2010 Se for somente chamar o *.exe é facil, ql sistema operacional? agora se qser chamar as linhas de código, ai já acho meio complicado, pois dependo do comando em C++, o C n vai reconhecer. []s Compartilhar este post Link para o post Compartilhar em outros sites
EFerneda 0 Denunciar post Postado Novembro 29, 2010 Se for somente chamar o *.exe é facil, ql sistema operacional? agora se qser chamar as linhas de código, ai já acho meio complicado, pois dependo do comando em C++, o C n vai reconhecer. []s Tudo bem, minha dúvida é se dá para compilar o programa em C,e a rotina em C++ separadamente e depois linkeditar os dois .o gerando um único executável. Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Novembro 30, 2010 Olha EU acho que isso não é possível, vamos ver se alguem tem uma opinião diferente. []s Compartilhar este post Link para o post Compartilhar em outros sites
ScreenBlack 13 Denunciar post Postado Dezembro 5, 2010 Essa pergunta eu achei bem interessante, então fui fazer o teste criando os seguintes arquivos: Lib.hpp: #ifndef _LIB_HPP #define _LIB_HPP void soma(int, int); #endif /* _LIB_HPP */ Lib.cpp: #include <cstdio> #include <cstdlib> #include "Lib.hpp" void soma(int a, int B) { printf("Resultado: %d", a+B); } Principal.c: #include <stdlib.h> #include <stdio.h> #include "Lib.hpp" int main(void) { printf("Teste\n"); soma(2,3); return 0; } Compilei a Lib.cpp: g++ -o Lib.o -static -c Lib.cpp Tentei linkar o binário: gcc -o Principal Principal.c Lib.o Mas foi sem sucesso. O compilador GCC não conseguiu encontrar os símbolos, por causa da assinatura das linguagens: /var/tmp//cc9xI6Zk.o(.text+0x2d): In function `main': : undefined reference to `soma' Lib.o(.eh_frame+0x11): undefined reference to `__gxx_personality_v0' Pesquisei sobre algum parâmetro que pudesse passar e compilar, mas não achei. Se alguém souber uma solução pra isso, eu também teria curiosidade em saber se é possível ou não. Compartilhar este post Link para o post Compartilhar em outros sites
EFerneda 0 Denunciar post Postado Dezembro 6, 2010 Ainda não terminei o teste mas está parecendo que vai funcionar. Já dizia Garfield "Se não pode vencê-los, confunda-os". Salvei meu programa.c como programa.cpp e compilei a criança. Alguns pequenos ajustes (um include aqui, uma conversão em uma passagem de parâmetros ali ...) e compilou OK como um programa C++. Agora dá para juntar com a rotima em c++ !!!!!!! Quando acabar o teste, aviso o resultado. Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Dezembro 6, 2010 calma ai, oq você pediu foi: rotina que está em C++ a partir de um programa em C.isso eu acho que não é possivel, agora o contrário até dá. []s Compartilhar este post Link para o post Compartilhar em outros sites
EFerneda 0 Denunciar post Postado Dezembro 6, 2010 O programa está em C ANSI. A rotina em C++. Se o C++ é um "superset" do C, então eu posso compilar meu programa em C como se fosse um programa C++ e chamar rotinas C++ !!! Tô errado ? Compartilhar este post Link para o post Compartilhar em outros sites
ScreenBlack 13 Denunciar post Postado Dezembro 7, 2010 Testei o contrário e funcionou sim. Você está certo. Compartilhar este post Link para o post Compartilhar em outros sites
guidjos 65 Denunciar post Postado Dezembro 11, 2010 O programa está em C ANSI. A rotina em C++. Se o C++ é um "superset" do C, então eu posso compilar meu programa em C como se fosse um programa C++ e chamar rotinas C++ !!! Tô errado ? A partir do momento em que se usa um compilador de C++, mesmo que o código seja todo feito de sintaxe e semântica válidas para o C, o programa é, em todos os aspectos, feito em C++. Compartilhar este post Link para o post Compartilhar em outros sites