Консультация № 188982
18.03.2016, 00:06
0.00 руб.
18.03.2016, 23:55
0 1 1
Здравствуйте! Прошу помощи в следующем вопросе:

Разработать приложение, которое состоит из библиотеки DLL и программы использующей эту библиотеку с помощью явной загрузки библиотеки в память. В библиотеке находится функция выполняющая задание: Создать программу проверяющую находится ли точка А(X,Y) внутри прямоугольника, заданого координатами левого верхнего (X1,Y1) и правого нижнего углов (X2,Y2) или на одной из его сторон.



Приложение:
Розробити додаток, що складається з бібліотеки DLL і модуля, що використовує цю бібліотеку, використовуючи явне завантаження DLL. У бібліотеці DLL розміщена функція, що виконує деяке завдання. Модуль використовує і викликає цю функцію. 10. Розробити програму випробування, яка перевіряє твердження, - (х1,y1) і (х2, у2) — координати лівою верхньою і правою нижнього вершин прямокутника; точка А(х, у) лежить усередині цього прямокутника або на одній з його сторін

Обсуждение

давно
Посетитель
7438
7205
19.03.2016, 15:38
общий
это ответ
Здравствуйте, r.shiba!
Модуль CmpPoints.cpp для создания CmpPoints.dll
[code h=200]
#include <windows.h>

BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}

extern "C" __declspec(dllexport) int __cdecl IsIn(POINT *A, POINT *P1, POINT *P2)
{
return ((A->x >= P1->x) &&
(A->y <= P1->y) &&
(A->x <= P2->x) &&
(A->y >= P2->y));
}
[/code]
Модуль main.cpp для вызова функции IsIn из CmpPoints.dl
[code h=200]
#include "windows.h"
#include "iostream"

using namespace std;

typedef int (__cdecl *PISIN)(POINT *A, POINT *P1, POINT *P2);

int main()
{
PISIN pIsIn = NULL;
HINSTANCE h = LoadLibrary("CmpPoints.dll");
if (!h)
{
cout << "Can't find CmpPoints.dll" << endl;
return -1;
}

pIsIn = (PISIN) GetProcAddress(h,"IsIn");

if (!pIsIn)
{
cout << "Error in CmpPoints can't find func IsIn" << endl;
return -2;
}

POINT a = {1,1};
POINT p1 = {0,2};
POINT p2 = {2,0};

int result = pIsIn(&a,&p1,&p2);
cout<< "result = " << result << endl;
return 0;
}
[/code]
Не забудьте скопировать созданную CmpPoints.dll в нужное место
И надеюсь, как создать DLL, вопросов нет?
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Форма ответа