Читайте также:
|
|
Пример написан на языке С++. В качестве примера показан файл с именем Test.cpp. Dll имеет 3 входа (1 – скалярный, 2 –векторный [3;1], 3- матричный [4;2]) и 3 выхода (1 – скалярный, 2 –векторный [3;1], 3- матричный [4;2]). Все передаваемые значения имеют тип double.
#include "system.h" //Файл с виртуальным классом System
typedef BOOL (__stdcall* LPFNCREATE)(System **);
typedef void (__stdcall* LPFNDESTROY)(System *);
void main()
{
LPFNCREATE CreateSystem = 0;
LPFNDESTROY DestroySystem = 0;
HINSTANCE hDLL;
hDLL = LoadLibrary("Test"); //Загрузка Dll
if (!hDLL)
{
cout << "Cannot load library"<<endl;
return 0;
}
//Подключение функций
CreateSystem = (LPFNCREATE)GetProcAddress(hDLL,"CreateSystem");
DestroySystem = (LPFNDSTROY)GetProcAddress(hDLL,"DestroySystem");
if (!CreateSystem)
{
cout << "Cannot get CreateSystem pinter"<<endl;
FreeLibrary(hDLL);
return 0;
}
if (!DestroySystem)
{
cout << "Cannot get DestroySystem printer"<<endl;
FreeLibrary(hDLL);
return 0;
}
System *psys=0;
BOOL res = CreateSystem(&psys); //Создание класса System
if (!res)
cout <<"cannot create system!"<<endl;
rtS st;
rtS st2;
char *InfoName;
char *ModelInfo;
psys->ModelName(&InfoName); //Получение имени Dll
cout<< InfoName <<endl;
psys->ModelInfo(&ModelInfo); //Получение информации о модели
cout<< ModelInfo<<"\n"<<endl;
int ni;
int no;
psys->GetNumberInput(&ni); //Получение количества входов
psys->GetNumberOutput(&no); //Получение количества выходов
cout<<"Input"<<" "<<ni <<endl;
cout<<"Output"<<" "<<no <<endl;
psys->GetInputInfo(1, &st); //Параметры 1-го входа
psys->GetOutputInfo(1, &st2); //Параметры 1-го выхода
psys->Initialize(); //Инициализация модели
double Out1; //Скаляр
double Out2[3]; //Вектор
double Out3[4*2]; //Матрица
double In1[3] [1] = {2,2,2};
double In2[3] [3] = {{1,2,3},{4,5,6},{7,8,9}};
double In3[3] [8] = {{2,3,3,4,1,5,2,6}, {11,12,13,14,15,16,17,18}, {21,22,23,24,25,26,27,28}};
LPVOID Op[3];
LPVOID Lp[3];
for (int i=0; i<3; i++)
{
Lp[0] = (LPVOID)&In1[i];
Lp[1] = (LPVOID)&In2[i];
Lp[2] = (LPVOID)&In3[i];
Op[0] = (LPVOID)&Out1;
Op[1] = (LPVOID)&Out2[0];
Op[2] = (LPVOID)&Out3[0];
psys->Operate(&Lp[0],&Op[0]);
}
psys->UnInitialize();
DestroySystem(psys);
FreeLibrary(hDLL);
}
ПРИЛОЖЕНИЕ Д
ПРИЛОЖЕНИЕ Е
Дата добавления: 2015-11-14; просмотров: 25 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Для создания кода на языке Си соответствующего построенной модели, нужно установить необходимые параметры моделирования среды Simulink. | | | Последовательность действий для создания эталонных файлов, применяемых для верификации алгоритмов математических процедур в создаваемых программой КМС Dll |