Callback function C++ для библиотеки DLL
Возникла проблема с Callback функцией. Точнее с её работой. Пишу DLL файл вычисления рядной функции, которая сходится при [-1;1]. Но пользователь может вводить любые числа. Так как функция рядная и сходится при [-1;1], то при вводе пользователя других x функция счета ряда начинает долго работать. Можно ли это отловить с помощь Callback функции и передать в основной файл сообщение об этом. Код dll
double sqrt(double x, double eps)
{
double t = 1, s = 1;
for (int k = 1; abs(t) > eps; ++k)
{
t *= x * (3 - 2 * k) / (2 * k);
s += t;
}
return s;
}
extern "C" __declspec(dllexport)
double myf_1A(double a, double x, double eps)
{
return(sqrt(x, eps));
}
extern "C" __declspec(dllexport)
double myf_math(double a, double x)
{
return (sqrt(1 + x));
}
extern "C" __declspec(dllexport)
const char* FName()
{
return "sqrt(1+x)";
}
Связь с основным файлом
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>
#include<cmath>
#include <iostream>
#include <windows.h>
#include <vector>
#include <locale.h>
using namespace std;
int main()
{
string* head = new string[5];
int f = 0;
HINSTANCE mydll;
string namedll = "Dll1";
if (!LoadLibraryExA(namedll.c_str(), 0, LOAD_LIBRARY_AS_DATAFILE))
{
cout << "Functions were not loaded" << endl;
return 0;
}
head[0] = "x"; head[1] = "MyFunction(x)"; head[2] = "Function(x)"; head[3] = "delta"; head[4] = "epsilon";
mydll = LoadLibraryA("DLL1");
if (mydll == NULL)
{
cout << "error" << endl;
return 0;
}
typedef double(*NFun)(double, double, double);
NFun dell = (NFun)GetProcAddress(mydll, "myf_1A");
typedef double(*funcfromlibrary)(double, double);
funcfromlibrary dell1 = (funcfromlibrary)GetProcAddress(mydll, "myf_math");
typedef const char* (*FName)();
FName Name = (FName)GetProcAddress(mydll, "FName");
if (!(mydll && dell && dell1 && Name))
{
cout << "Error in library" << endl;
system("pause");
exit(0);
}
~~~