Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1260 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Code mixte c/c++

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Code mixte c/c++

n°1124960
_TomTom_
Posté le 20-06-2005 à 09:18:50  profilanswer
 

Bonjour  
Je réalise un lecteur audio.Celui-ci est dans un projet MFC en language c++.
 
Seluement je dois créer des fonctions mais qui celles-ci sont en language c.
Est-ce que cela ne pose pas de problème?  
Dois-je mettre les fonctions en codes C dans un autre fichier sorce?
 
Merci

mood
Publicité
Posté le 20-06-2005 à 09:18:50  profilanswer
 

n°1124963
Taz
bisounours-codeur
Posté le 20-06-2005 à 09:29:48  profilanswer
 

oui et le compiler comme C

n°1124971
_TomTom_
Posté le 20-06-2005 à 09:33:49  profilanswer
 

Excuses-moi pour mes lacunes en programmation mais qu'est-ce que tu entends par le compiler comme C? Car lorsque je compile que ce soit en c ou en c++ j'utilise la meme fonctions ds vs++.

n°1124978
Taz
bisounours-codeur
Posté le 20-06-2005 à 09:41:54  profilanswer
 

alors tu ne fais jamais que du C++

n°1124981
_TomTom_
Posté le 20-06-2005 à 09:44:14  profilanswer
 

Pourrais-tu donc me dire, si cela ne te déranges pas comment dois-je faire pour allier les deux?

n°1124990
Elmoricq
Modérateur
Posté le 20-06-2005 à 09:54:16  profilanswer
 

_TomTom_ a écrit :

Pourrais-tu donc me dire, si cela ne te déranges pas comment dois-je faire pour allier les deux?


 
Comme dit précédemment, tu mets les fonctions C dans des sources C, que tu compiles en C (voir avec ton compilateur pour le paramétrer comme il faut, peut-être qu'avec la bonne extension c'est automatique ?).
Tu compiles ça en lib (DLL je pense), pas en exécutable.
 
Encadrer tes fonctions dans le .h correspondant par :

Code :
  1. #ifdef __cplusplus
  2. extern "C" {
  3. #endif
  4. /* declaration de fonctions C ici */
  5. #ifdef __cplusplus
  6. }
  7. #endif


 
 
Dans ton projet C++, tu inclues le fichier .h qui va bien, tu inclues dans ton projet la DLL nouvellement créée, et voila.

n°1124992
_TomTom_
Posté le 20-06-2005 à 09:56:25  profilanswer
 

Merci Elmoricq

n°1125240
HelloWorld
Salut tout le monde!
Posté le 20-06-2005 à 14:58:00  profilanswer
 

Si tu mets l'extension .c à ton code source, VC++ compilera ça comme du C.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°1125272
_TomTom_
Posté le 20-06-2005 à 15:19:13  profilanswer
 

Maintenant g un problème pour ouvrir mes fichiers.
 
En effet lorsque j'ouvre un fichier avec mon code c++, le type de fichier est CString.  
Or les fonctions C que j'utilisent dans mon fichier C ont besoin que le type du ficher soit char.
 
La variable en c++ s'appellent m_Name et celle du code c est filename.
 
La fonction c est blabla(filename,int playfile).
 
Dans la fonction c++ le fichier est ouvert de la facon suivante: CFileDialog avi(...)

n°1125273
_TomTom_
Posté le 20-06-2005 à 15:23:13  profilanswer
 

CString tmp;
POSITION p=avi.GetStartPosition()
while(p!=NULL)
{
     tmp=avi.GetNextPathName(p);
     int pos =tmp.reverseFind('\\');
     m_path=tmp.Mid(o,pos);
     tmp= tmp.Mid(pos + 1,tmp.GetLenght());
     m_Name=tmp;
     m_ListSong.AddString(tmp);
 

mood
Publicité
Posté le 20-06-2005 à 15:23:13  profilanswer
 

n°1125276
_TomTom_
Posté le 20-06-2005 à 15:24:53  profilanswer
 

alors que la fonction C utilise fopen pour ouvrir un fichier.
Je pense que la solution au probleme viendrai du lien a faire avec CString m_Name et char filename mais je n'y arrive pas...

n°1125291
bjone
Insert booze to continue
Posté le 20-06-2005 à 15:54:56  profilanswer
 

CString a un cast automatique en char *
tu peux faire:
 
CString Txt;
.....
char *ptr=Txt;
.....
CString n(ptr);
 
.........
 
pour tout ce qui est C++, tu utilises CString ou std::string, tu évites (const) char * dans tes membres de classes....

n°1125298
_TomTom_
Posté le 20-06-2005 à 16:02:00  profilanswer
 

merci, j'essaie tout de suite

n°1125299
_TomTom_
Posté le 20-06-2005 à 16:06:33  profilanswer
 

Ca ne marche pas , il me réponds cannot convert from 'class CString' to 'char*'

n°1125310
Elmoricq
Modérateur
Posté le 20-06-2005 à 16:19:15  profilanswer
 

Montre comment tu fais.

n°1125365
_TomTom_
Posté le 20-06-2005 à 16:54:48  profilanswer
 

CString m_Name;
 
char *filename=m_Name;
 

n°1125367
_TomTom_
Posté le 20-06-2005 à 16:58:44  profilanswer
 

Le tout étant de transformer un CString en char * afin de pouvoir utiliser la fonction read(char *,int)

n°1125462
bjone
Insert booze to continue
Posté le 20-06-2005 à 18:23:01  profilanswer
 

c'est pas suffisant comme code.

n°1128091
ffomnislas​h
Posté le 22-06-2005 à 23:37:33  profilanswer
 

je ne connait pas la difference entre string et cstring mais avec string il y a string.c_str() alors peut être que cstring la aussi

n°1128332
bjone
Insert booze to continue
Posté le 23-06-2005 à 10:06:38  profilanswer
 

toujours pas résolu ton pb ?
 
ha oui c'est un problème de constness.
 
CString yop;
 
c'est: const char *ptr=Yop;
et pas: char *ptr=Yop;

n°1130643
slash33
Posté le 25-06-2005 à 12:04:06  profilanswer
 

T'as essayé avec CString.GetBuffer(1)?

n°1133248
_TomTom_
Posté le 28-06-2005 à 10:31:02  profilanswer
 

Merci!

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Code mixte c/c++

 

Sujets relatifs
[C/C++] utilisation de code C dans du C++requete SQL -> Array : perfectionnement du code !!
Eclipse : code Java non reconnuJavascript Screennnnnnnnnnnnnn
VLC: decodage d'un Truncated Exp-Golomb code [Résolu]Générateur de code ?
optimisation code CSS pour IE[ASP] optimisateur de code ASP
execution de code par la fonction EVALCompte les lignes de code ?
Plus de sujets relatifs à : Code mixte c/c++


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR