0

C# dll を呼び出す必要がある C++ の関数があります。C++ 関数は、値を C# dll 関数に送信するだけです。C# dll は、これらの値を使用していくつかのファイルを生成し、終了します。

私の問題は、COM を使用する場合、別のコンピューターを使用するたびに DLL を登録する必要があることです。では、dll ファイルを登録し、ビルド時に .tlb ファイルを生成する方法はありますか?

$(TargetPath) $(TargetDir) C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe $(TargetPath) /codebase CReportGenerationDLL.dll /tlb:CReportGenerationDLL.tlb をコピーします。

これは私が試したものですが、うまくいきません..コード9009で終了します

//ピューダット

4

1 に答える 1

4

別のコンピューターでアプリケーションをビルドするたびに COM オブジェクトを自動的に登録することを意味する場合、答えは (ビルドに VS2010 を使用していると仮定して) : Project/Properties/Build events に移動し、"Post-buildイベントコマンドライン」の次の行:

regasm <path to your COM .dll>

別のコンピューターでアプリケーションを実行するたびに COM オブジェクトを自動的に登録することを意味する場合は、以下を含むバッチ ファイルを作成できます。

regasm <path to your COM .dll>
<path to your application>app.exe"

または、ShellExecute 関数を使用してアプリケーションから regasm.exe を呼び出すだけです。

/s スイッチを追加して、登録をサイレントにすることができます。

エラー 9009 は、レガズムへのパスが間違っていることを示しています。こちらを参照してください

copy $(TargetPath) $(TargetDir) は場違いです。なぜこれが必要なのですか。何を達成しようとしていますか?

于 2012-04-24T14:48:31.593 に答える