Вам нужна память для хранения каждой нужной вам строки, поэтому глобальный буфер здесь не будет работать. Либо ваша функция QStringToTCharBuffer
выделяет новый буфер символов для каждой строки, либо передает буфер символов в функцию. Я бы посоветовал второй, поскольку вы, скорее всего, забудете, что функция выделяет память.
т.е:
TCHAR *dllmerge::QStringToTCharBuffer( QString buffer )
{
TCHAR* nameBuffer = new TCHAR[256];
memset(nameBuffer, 0, sizeof(nameBuffer));
#if UNICODE
_tcscpy_s(nameBuffer, _countof(nameBuffer), buffer.toUtf8());
#else
_tcscpy_s(nameBuffer, _countof(nameBuffer), buffer.toLocal8Bit());
#endif
_tprintf( _T( "nameBuffer %s\n" ), nameBuffer );
return nameBuffer;
}
против
void Caller()
{
const int maxSize = 256;
TCHAR szSecondInFile[maxSize];
TCHAR szOutFile[maxSize];
QStringToTCharBuffer( userName, szSecondInFile, maxSize );
QStringToTCharBuffer( Destinationfilename, szOutFile, maxSize );
}
dllmerge::QStringToTCharBuffer( QString buffer, TCHAR* pOutString, const int size )
и т.д.