Я написал код на родном C ++ для вычислительно дорогого численного анализа, поэтому скорость программы является важным фактором.Я хотел бы разработать графический интерфейс для простого ввода вместо использования консольной версии.У меня очень мало опыта в разработке графического интерфейса, но Windows CMS для Visual C ++ кажется достаточно легким с графическим интерфейсом.Проблема заключается в том, что написание серверной части моего кода в управляемом CLR замедляет код в 3 раза, что, конечно, является большим фактором.Так что мне интересно, можно ли создать собственную dll из моего неуправляемого кода и включить ее в графический интерфейс, разработанный с помощью Windows Forms.В основном вычисления будут выполняться собственной библиотекой, которая будет обрабатывать вычисления, а интерфейс - это форма Windows, созданная с помощью управляемого кода.Таким образом, коэффициент скорости не изменяется, я думаю, что я должен быть в состоянии сделать это.Тем не менее, я не нашел много информации об этом в сети, как о шагах и правильном синтаксисе (я не слишком хорош в Visual Studio, я обычно использую GCC для компиляции своего кода).Ниже приведен пример класса C ++, который решает квадратное уравнение.Я предполагаю очевидные вопросы, нужно ли создавать dll определенным образом, как включить его в проект, как передать параметры в dll и вызвать функции ...
#include <cmath>
using namespace std;
class QuadraticEquation // ax^2+bx+c=0
{
public:
QuadraticEquation();
void set(double A, double B, double C); //mutator function
void solve();
double get1stRoot(); //accessor function for first solution
double get2ndRoot(); //accessor function for second solution
private:
double a;
double b;
double c;
double x1; // first solution
double x2; // second solution
};
QuadraticEquation::QuadraticEquation()
{
a = 0, b = 0, c = 0, x1 = 0, x2 = 0;
}
void QuadraticEquation::set(double A, double B, double C)
{
a = A, b = B, c = C;
}
void QuadraticEquation::solve() // member function to solve the equation
{
double D = pow(b, 2.0) - 4 * a * c;
if(D>=0) // only then we get real solutions and not imginary ones
x1 = (-b + sqrt(D)) / (2*a), x1 = (-b - sqrt(D)) / (2*a);
}
double QuadraticEquation::get1stRoot()
{
return x1;
}
double QuadraticEquation::get2ndRoot()
{
return x2;
}
Заранее спасибо