C++を新しくしました。私は最近、csvファイルからデータを読み込んでマップコンテナに格納するいくつかの関数を含むdllを構築しました。今私はユーザーがCSVファイルの完全なパスとファイル名を指定し、ボタンをクリックして私のDLL機能を実行できるようにするユーザーインターフェイスを作成したいと思います。ウィンドウフォームのボタンをクリックしてC++を呼び出す
Windows Formsアプリケーションがこれを行う可能性があります。フォームを作成した後、次の関数の括弧の中にいくつかのコードを入れることができます。
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {}
フォームを操作するだけでうまくいきます。たとえば、単純な乱数ジェネレータ:私はdllファイルを実行するために、クライアントプログラムにこれを変更した場合
int num[7] = { 0 };
seed
srand((int)time(0));
for (int i = 0; i < 7; i++)
num[i] = (rand() % 99) + 1;
this->label1->Text = Convert::ToString(num[0]);
this->label2->Text = Convert::ToString(num[1]);
this->label3->Text = Convert::ToString(num[2]);
...
しかし、それは動作しません。 button1_Click機能のブラケットに
double a = 7.4;
int b = 99;
cout << "a + b = " <<
MathLibrary::Functions::Add(a, b) << endl;
cout << "a * b = " <<
MathLibrary::Functions::Multiply(a, b) << endl;
cout << "a + (a * b) = " <<
MathLibrary::Functions::AddMultiply(a, b) << endl;
と追加のディレクトリが含まれるように、通常の手順に従ってください:MSDNのdll例 https://msdn.microsoft.com/en-gb/library/ms235636.aspx
を使用して例えば
は、私はドライバプログラムを置きます。次に、参照を追加する際に問題が発生しました。私はVisual Studio 2013を使用していますので、通常の手順はプロジェクトエクスプローラのプロジェクト名を右クリックしてを追加します。新しいリファレンスを追加します。その後、DLLが出てボックスがチェックすることを確認します。しかし、Visual Studioはdllを見つけることができないので、dllを参照せずにプロジェクトをビルドするとエラーLNK2028が出ます。
Windowsフォームのボタンをクリックすると、DLLからいくつかの関数を呼び出すことが可能ですか?はいの場合は、上記の参照問題をどのように解決できますか?または私は間違った方向にいますか?
多くのありがとうございます。
**正確な**エラーメッセージを必ず引用してください。そして、LNK2028のMSDN記事を読んで、C++/CLIプログラムで実行している問題の種類について明示的に話します。一般に、.hファイルにはマネージコードが含まれていないことをコンパイラーに伝える必要があります。 #pragma managed(push、off)を#includeの前に置き、#pragma managed(pop)の後に置いてください。 –