#cpp
#include "stdafx.h"
#define MT4_EXPFUNC __declspec(dllexport)
using namespace std;
// Создаем разделяемую секцию.
#pragma data_seg(".shared")
#pragma comment(linker,"/SECTION:.shared,RWS")
#pragma data_seg()
// Максимальная длина строки, в символах.
int const MaxStringLength = 65535;
/* Статическая проверка (опционально)
static_assert(0 != MaxStringLength, "MaxStringLength cannot be 0.");
*/
// Выделяем буфер в разделяемой секции и заполняем его нулями.
// В буфере должно быть место для строки и завершающего нуля.
__declspec(allocate(".shared")) char SharedStrVar1[MaxStringLength + 1] = {0};
__declspec(allocate(".shared")) char SharedStrVar2[MaxStringLength + 1] = {0};
__declspec(allocate(".shared")) char SharedStrVar3[MaxStringLength + 1] = {0};
// Функция записи строки в разделяемый буфер.
void __stdcall SharedStrVarSet(char* InStr, int i)
{
// Учитываем ситуацию с переполнением буфера.
if (MaxStringLength < lstrlenA(InStr))
{
return;
}
// Копируем строку в буфер.
switch(i)
{
case(0):
lstrcpyA(SharedStrVar1, InStr);
break;
case(1):
lstrcpyA(SharedStrVar2, InStr);
break;
case(2):
lstrcpyA(SharedStrVar3, InStr);
break;
}
}
// Функция чтения строки из разделяемого буфера.
char* __stdcall SharedStrVarGet(int i)
{
char* out;
switch(i)
{
case(0):
out = SharedStrVar1;
break;
case(1):
out = SharedStrVar2;
break;
case(2):
out = SharedStrVar3;
break;
}
return out;
}
Ответов: 176
Рейтинг: 12
|
|||
Наконец-то вопрос решился. Вот код рабочей dll
|
|||
карма: 0 |
| ||
файлы: 1 | code_25101.txt [1.8KB] [209] | ||
Голосовали: | Aziz |