1

私は3つのプロジェクトを持っています

1)完全なビジネスロジックを含むアンマネージドC ++

2)C ++ / CLI(プロジェクト名管理

3)C#GUI

アンマネージドC++のライブラリファイルをC++/ CLIに追加し、次にC ++ / CLIのdllをC#プロジェクトに追加しました。これはすべて正常に機能しており、実行に問題はありません。

ここで、C ++ / CLIラッパーを呼び出すC#関数の単体テストを実行して、結果を取得したいと思います。VisualStudio 2010を使用して単体テストを作成しました。テストプロジェクトに、C ++/CLIのdllを追加しました。テストを実行しようとすると、例外がスローされますmanaged.dll not found

これがコードです

   [TestMethod()]
   public void getstateTest()
   {
    bool expected=true;
    bool actual=false;
    try
     {
        GUI.test target = new test();
        expected    = true; // TODO: Initialize to an appropriate value
        actual      = target.getstate();
     }
     catch (FileNotFoundException exception)
     {
        MessageBox.Show("Missing file is : " + exception.FileName);
     }
     Assert.AreEqual(expected, actual);
    }



    The getstate function is

namespace GUI
{
public class test
{
    public bool getstate()
    {
        bool chk = false;
        bool result;
        String a = "some path";
        String b = "some path"
        String c = "some path"
        managed  objct;
        objct = new  managed();
        objct.Initialize(a, b, c, chk);
        objct.Execute();//calls the C++/CLI execute which calls unmanaged C++
        result = objct.Executionresult();//gets a bool result
        return result;
    }
}

}

アプリケーションを実行しても同じことが正常に機能しますが、テストプロジェクトを実行すると、dllが見つからないと表示されます

混乱させてしまったらごめんなさい。詳しい情報が必要な場合はお問い合わせください。よろしくお願いします。

4

2 に答える 2

1

テスト プロジェクトの出力フォルダーを確認しましたか? managed.dll が出力にコピーされていない可能性があります。

アップデート:

例外から融合ログを投稿していただけますか? これにより、ファイルが見つからない理由がいくつかわかります。

于 2012-03-21T05:53:40.077 に答える
0

プロジェクトはおそらく異なるディレクトリにコンパイルされています。

これにより、コンパイラは正しくコンパイルされますが、実行時にファイルが見つかりません。

これは、個別のプロジェクトを新しいソリューションにインポートするときによく発生します。

新しい単体テストを同じディレクトリにコンパイルします。

于 2012-03-21T05:56:22.600 に答える