[C/C++] Communicatie C programma en C++ dll

Pagina: 1
Acties:

  • PKP B-Man
  • Registratie: November 2002
  • Laatst online: 19-07-2023
Hallo, ik heb een programma in C, die roept een DLL aan in C++. Nu wil ik vanuit de DLL een aantal textstrings (neem voor het gemak 3) door geven aan het c-programma door middel van maar 1 paramater of 1 return te gebruiken.

Nu krijg ik dit niet helemaal voor elkaar. Ik heb al geprobeerd om een structure door te geven aan de DLL en deze aan te passen, of door een array ([][]) door te geven en deze aan te passen.
Nu werken een aantal van deze methodes wel zodra ik het in hetzelfde programma doe, maar niet als ik het van programma naar dll doe :(

Wat is hier nou de beste methode voor? Alvast bedankt!

Edit: oeps, topic niet helemaal goed ingevoerd zie ik net |:( kan ik niet veranderen :'(

[ Voor 9% gewijzigd door PKP B-Man op 04-01-2004 20:03 ]


Verwijderd

Hoe representeer je de string precies? Indien je een char pointer gebruikt, kun je een array van strings als volgt representeren:

code:
1
char** stringList;

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
"Niet werken" is ook niet echt duidelijk.
code:
1
2
3
4
5
struct string{ 
  char * a;
  char * b;
  char * c;
}

zou gewoon moeten werken. Zorg er wel voor dat de C++ functie als extern "C" gedefnieerd is.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • PKP B-Man
  • Registratie: November 2002
  • Laatst online: 19-07-2023
Bedankt voor jullie hulp!

Wat er niet werkt is dat de DLL wel de goede tekst bevat als ik die laat zien dmv een messagebox, en het c programma niet als ik deze laat zien dmv een msgbox.

Maar zou dit theoretish mogen werken?
C++:
1
2
3
4
5
6
7
8
9
int fABC(char ABC[3][100])
{
    strcpy(ABC[0],"aaaaaaa");
    strcpy(ABC[1],"bbb");
    strcpy(ABC[2],"cccccccccccccc");

    MessageBox(NULL,(LPTSTR)ABC[0],(LPTSTR)ABC[2],MB_OK);
    return 0;
}
C:
1
2
3
4
//Als ik deze aanroep met
char ABC[3][100];
fABC(ABC);
MessageBox(NULL,(LPTSTR)ABC[0],(LPTSTR)ABC[2],MB_OK);


Iets zegt mij dat dit niet juist is, maar als ik dit test in een apart C++ programma, werkt het wel. Zodra ik het implementeer in het prog. en de dll, dan krijg ik in het C-programma weer verkeerde tekst.

P.S. Dit is niet de manier waarop jullie het bedoelen!?

Edit:
@whoami: bedankt! Maar hoe geef ik je dit in hetvervolg makkelijk door? Ik zie geen pm-systeem of iets dergelijks :/

[ Voor 10% gewijzigd door PKP B-Man op 04-01-2004 21:42 ]


  • PKP B-Man
  • Registratie: November 2002
  • Laatst online: 19-07-2023
offtopic:
Idd een pushmessage omdat ik zelf het topic niet kon aanpassen:
Zeg eens welke titel je voor dit topic wilt, dan pas ik 'm aan.

[C/C++]

whoami

ontopic:
Ik ben er trouwens achter gekomen dat het niet het probleem was om de strings door te geven, ik denk dat dit altijd al wel goed ging zonder dat ik het door had, maar mijn C++ programma gebruikt voor deze tekst ANSI-ASCII en mijn C programma UNICODE. Dit wist ik niet en dat zocht ik er ook niet achter....

Nu een manier zien te vinden om ANSI naar UNI om te zetten............

Toch bedankt allemaal!