我用原生C ++编写了一个代码,用于计算成本高昂的数值分析,因此程序速度是一个重要因素。我想开发一个简单输入的GUI,而不是使用控制台版本。我对GUI开发的经验很少,但Visual C ++ Windows Forms看起来很简单,它是图形界面。问题是在托管CLR中编写代码的后端会使代码减慢3倍,这当然是一个重要因素。所以我想知道是否有可能从我的非托管代码创建一个本机DLL并将其包含在使用Windows Forms开发的GUI中。基本上,计算将由本机库处理计算完成,前端是使用托管代码创建的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;
}
提前致谢
答案 0 :(得分:0)
上次我使用Windows Forms时,我有一段时间使用dll的。您可以将它们包含在项目中并访问它们,但我这样做的经验并不令人愉快。这就是我得到的全部
[编辑] 我相信你的问题的答案是肯定的,你可以访问自己创建的dll文件或诸如此类的东西。而据我所知,它不必以某种方式构建。
答案 1 :(得分:0)
另一种解决方案是使用MFC应用程序向导。它也有一个拖放GUI。该向导将引导您完成创建基本GUI的步骤,然后您可以向表单添加控件。
如果您想使用Windows窗体,请查看我对此问题的回答: Missing Namespace