計算コストの高い数値解析のためにネイティブC++でコードを書いたので、プログラムの速度は重要な要素です。コンソール版を使うのではなく、簡単な入力用のGUIを開発したいと思います。 GUI開発の経験はほとんどありませんが、Visual C++のWindowsフォームはグラフィカルインターフェイスで十分に簡単です。問題は、管理対象のCLRに自分のコードのバックエンドを書き込むと、コードが3倍遅くなることです。これはもちろん大きな要因です。だから私は、管理されていないコードからネイティブdllを作成し、Windowsフォームで開発されたGUIに含めることが可能かどうか疑問に思っています。基本的に計算はネイティブライブラリによって行われ、フロントエンドはマネージコードで作成されたWindowsフォームです。このように速度係数は変更されません 私はそれを行うことができるはずだと思います。しかし、私は、関連する手順や正しい構文(私はVisual Studioでうまくいきません、私は通常、私のコードをコンパイルするためにGCCを使用しています)のようなネット上の多くの情報を見つけませんでした。 次は、2次方程式を解くサンプルC++クラスです。私は、明白な質問を推測dllがWindowsフォームでのネイティブC++ 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;
}
...あなたはDLLにパラメータを渡すと、関数を呼び出すか、どのようにプロジェクトに含めないか、特定の方法で構築されなければならないのおかげで事前に
感謝。私はこれについていくつかの文書がどこにあるのか知っていますか?関係するステップと関連する構文は、私にはまだ不明です。 – Jeanno
さて、Visual Studioを使用すると、dllを簡単に組み込むことができます。ウィザードをクリックするだけでリソースとして追加できます。プロジェクトエクスプローラでFormsプロジェクトを右クリックし、オプションを調べると見つかるはずです。私は具体的に言うだろうが、私は私の恋人から離れている。単純に使用するためにそれを追加するには、vsがあなたのために世話をするので、構文は必要ありません。しかし、それを使用することはあなたのDLLに依存し、私はそれを手伝うことはできません。 –