1

良い一日、

既存の C# プロジェクトを使用して、関数を C++/CLI DLL にラップしたいと考えています。この DLL を VB 6 から読み取れるようにする必要があります。VB 6 で使用するために .net DLL を登録する必要がないため、このルートを選択します。率直に言って、私はこのようなことの経験がないので、良い例をいただければ幸いです。このような同様の質問がたくさんあることは知っていますが、理解できるほど単純なものを見つけることができませんでした。

4

3 に答える 3

1

C# コード [ComVisible] を作成することは非常に簡単であり、Regasm.exe を怖がらせる必要はありません。Regasm でよくある間違いは、開発マシンで /codebase オプションを使用するのを忘れることです。

これを利用しないことを主張する場合は、C++/CLI および C# コードを実行できるように、CLR を自分でロードする方法を見つける必要があります。そのための基本的な方法は 3 つあります。ホスト アプリが VB6 の場合、COM 相互運用性を考慮せず、CLR を自分でホストすることはあまり実用的ではありません。ただし、CLR をロードしてマネージ コード実行に切り替えるアンマネージ DLL エントリポイント スタブを生成する C++/CLI コンパイラの機能を利用することはできます。で装飾する静的関数を作成することにより、これを行い__declspec(dllexport)ます。テクニックはこの回答に示されています。特にパフォーマンスが高いわけではなく、VB6 の Declare ステートメントによって課せられた制限を受け入れる必要があることに注意してください。

また、これらのスタブを C# アセンブリに直接挿入できるこの後処理ツールも確認してください。どれだけ信頼できるかはわかりませんが、私自身は使用していません。

于 2012-08-13T15:44:16.327 に答える
0

男になって、いくつかの異なるコンパイル/リンク/関数呼び出しプロトコル構成の下でそのDLLを作成してください。次に、VB6 プロジェクトでいくつかの異なる参照構成を試してください。機能するものを投稿します。貢献せよ、前進せよ!

于 2012-08-13T15:15:00.037 に答える
0

マネージ コードをアンマネージとしてエクスポート するをご覧ください。

およびアンマネージド エクスポート用の C# プロジェクト テンプレート

于 2012-08-13T15:56:02.957 に答える