2012-04-24 2 views
0

私はC#dllを呼び出す必要があるC++の関数を持っています。 C++関数は単にC#のdll関数に値を送信します。 C#dllはこれらの値を使用していくつかのファイルを作成し、終了します。COMがビルドされているかどうかにかかわらず、C#dllを自動登録で呼び出すアンマネージドC++?

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

コピー$(TargetPathが)$(TARGETDIR)C:\ WINDOWS \ Microsoft.NET \ Frameworkの\ v2.0.50727の\ RegAsm.exeを$(TargetPathが)/コードベースCReportGenerationDLL.dll /tlb:CReportGenerationDLL.tlb

これは私がしようとしているものですが、それは文句を言わない仕事..私はコードで終了します9009

// Pewdut

答えて

4

は別のアプリケーションを構築するとき、あなたの意味は、たびに自動的にあなたのCOMオブジェクトを登録する場合compputer、答えは(あなたがVS2010を使っていると仮定して): Goはプロパティ/イベントを構築し、「ビルド後に実行するコマンドライン」 次の行に追加/プロジェクトに:あなたの意味は自動的あなたを実行するたびに、あなたのCOMオブジェクトを登録する場合

regasm <path to your COM .dll> 

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

それとものShellExecute関数を使用してアプリケーションからRegasm.exeによってを呼び出す:別のcompputer上のアプリケーションは、あなたが含まれているバッチファイルを作成することができます。

登録をサイレントにするには、/ sスイッチを追加するとよいでしょう。

エラー9009は、あなたがこれを必要とするなぜ、何を達成しようとしている、here

コピー$(TargetPathが)$(TARGETDIR)は場違いであることがわかります。regasmへのパスが間違っていると言っていますか?

+0

コピー$(TargetPathが)$(TARGETDIR) C:\ WINDOWS \ Microsoft.NET \ Frameworkの\ v2.0.50727の\ RegAsm.exeを$(TargetPathが)/コードベースCReportGenerationDLL.dll /tlb:CReportGenerationDLL.tlb これは、私は何を試みたのですが、それはうまく動作しません。私はregsvr32がこの文脈で正しいとは思わない、申し訳ありませんが、私の問題が貧弱に書かれています。 – Pewdut

関連する問題