Code mixte c/c++ - C++ - Programmation
Marsh Posté le 20-06-2005 à 09:33:49
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++.
Marsh Posté le 20-06-2005 à 09:44:14
Pourrais-tu donc me dire, si cela ne te déranges pas comment dois-je faire pour allier les deux?
Marsh Posté le 20-06-2005 à 09:54:16
_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 :
|
Dans ton projet C++, tu inclues le fichier .h qui va bien, tu inclues dans ton projet la DLL nouvellement créée, et voila.
Marsh Posté le 20-06-2005 à 14:58:00
Si tu mets l'extension .c à ton code source, VC++ compilera ça comme du C.
Marsh Posté le 20-06-2005 à 15:19:13
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(...)
Marsh Posté le 20-06-2005 à 15:23:13
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);
Marsh Posté le 20-06-2005 à 15:24:53
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...
Marsh Posté le 20-06-2005 à 15:54:56
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....
Marsh Posté le 20-06-2005 à 16:06:33
Ca ne marche pas , il me réponds cannot convert from 'class CString' to 'char*'
Marsh Posté le 20-06-2005 à 16:58:44
Le tout étant de transformer un CString en char * afin de pouvoir utiliser la fonction read(char *,int)
Marsh Posté le 22-06-2005 à 23:37:33
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
Marsh Posté le 23-06-2005 à 10:06:38
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;
Marsh Posté le 20-06-2005 à 09:18:50
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