2012-03-01 14 views
0

計算コストの高い数値解析のためにネイティブ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にパラメータを渡すと、関数を呼び出すか、どのようにプロジェクトに含めないか、特定の方法で構築されなければならないのおかげで事前に

答えて

0

私はWindowsフォームで作業していた前回、私は時間の地獄dllを使用していた。あなたのプロジェクトにそれらを含めることができ、それらにアクセスすることができますが、私の経験は楽しいものではありませんでした。それは私が持っているものです

[編集] 私はあなたの質問への答えははいと思う、あなたは自分の作成やその他のもののdllファイルにアクセスすることができます。そして、私が知っていることから、それは特定の方法で構築する必要はありません。

+0

感謝。私はこれについていくつかの文書がどこにあるのか知っていますか?関係するステップと関連する構文は、私にはまだ不明です。 – Jeanno

+0

さて、Visual Studioを使用すると、dllを簡単に組み込むことができます。ウィザードをクリックするだけでリソースとして追加できます。プロジェクトエクスプローラでFormsプロジェクトを右クリックし、オプションを調べると見つかるはずです。私は具体的に言うだろうが、私は私の恋人から離れている。単純に使用するためにそれを追加するには、vsがあなたのために世話をするので、構文は必要ありません。しかし、それを使用することはあなたのDLLに依存し、私はそれを手伝うことはできません。 –

0

MFCアプリケーションウィザードを使用する方法もあります。ドラッグ&ドロップのGUIもあります。ウィザードで基本GUIを作成し、フォームにコントロールを追加することができます。

あなたはこの質問に私の答えをチェックし、その後、Windowsフォームを使用する場合: Missing Namespace

関連する問題