2009-04-28 3 views
0

私のVB6.0では、私はWindows APIのトンを使用しました。だから、私が宣言したすべてのAPIメソッドは、プロシージャベースのものであるか、プロシージャベースのエントリポイントを持っているという考えがあります。APIアセンブリ

私の質問:

私はVB6.0からアクセスする必要があるC#でいくつかのコードを書かれています。私のC#コードをDLLにコンパイルしてVB6.0からそのC#DLLにアクセスしてAPI呼び出しとして宣言することは可能ですか?もしそうなら、これはどのように行われますか?

(私はすでに私のC#のDLLをCOM準拠した作り試してみましたが、それが働いた - しかし、私はとにかく、上記のアプローチを試してみたい)

おかげで

+1

C#DLLをCOMに準拠させたくない特別な理由はありますか? – MarkJ

答えて

4

いいえ、あなたがエントリを公開することはできませんWin32スタイルのAPIとしてC#DLLを指しています。 .NETライブラリの手続き型エントリポイントを実際に作成する必要がある場合は、おそらくC++/CLIを使用して混合モードラッパーライブラリを作成するのが最もよい方法です。しかし、これは難しい作業のようです:あなたのC#クラスをCOMオブジェクトとして公開することは、労力と労力を大幅に減らすことになります。

+0

完全に正しい、+1 –

0

あなたの手が(非常に)汚れていればうれしいですが、MSILを使ってあなたが望むことをすることができます。ウォークスルーについてはthis CodeProject projectをご覧ください。