Как правильно передать текст из DLL в mq4

 

В DLL у меня так

MT4_EXPFUNC void __stdcall f(char* text)
{
    sprintf(text,"error at %u iteration",i);
}

А в mq4 так

#import "test.dll"
   void f(string text);
#import


int start(){
   string text;
   f(text);
   Print(text);
   return(0);
}

MetaTrader ломается. Пробовал ещё так, и все равно ломается:

MT4_EXPFUNC void __stdcall f(string* text)
{
    text[0]="error";
}

#import "test.dll"
   void f(string text[]);
#import


int start(){
   string text[];
ArrayResize(text,1);   
f(text);    Print(text[0]);    return(0); }

Подскажите пожалуйста как мне правильно это сделать.

 
char *  f(char * text){
  char * textToReturn = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, 11 + strlen(text));
  strcpy (textToReturn, "here we are"); // 11 символов = длина строки "here we are"
  strcat (textToReturn, text);
  return (textToReturn);
}

// если я еще не забыл С...

и, соответственно, в мкл4

string text = f("что нибудь этакое не знаю что");
print (text);
 
OrlandoMagic :
char *  f(char * text){
  char * textToReturn = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, 11 + strlen(text));
  strcpy (textToReturn, "here we are"); // 11 символов = длина строки "here we are"
  strcat (textToReturn, text);
  return (textToReturn);
}

// если я еще не забыл С...

и, соответственно, в мкл4

string text = f("что нибудь этакое не знаю что");
print (text);

Спасибо. Буду пробовать.

Причина обращения: