2012-04-24 12 views
1

execdll.exeを使用して、c#.net dllでメソッドを実行できるかどうかを知る必要があります。"execdll.exe"を使用してC#DLLのメソッドを呼び出しますか?

私は単純な方法のHello Worldを実行しようとしていますが、「このファイルの機能を参照できません」というエラーが表示されます。私が何か間違っているのかどうか分からない。

答えて

0

rundll32.exeまたは少なくともexecdll.exeが類似していると仮定します。

.NETクラスをプレーンなDLLとして公開することはできません。彼らはしかし、COM DLLとして公開することができます。ですから、あなたが望むものを作る唯一の方法は、COMクラスとして.NETクラスを公開し、COMオブジェクトをインスタンス化して呼び出す通常のDLL(C++、Delphiなど)を作成することです。その後、rundll32.exeやその他のツールからDLLを呼び出すことができます。

0

あなたは方法が公開されていること、その

Assembly.Load(byteArrayOfDll).EntryPoint.Invoke(null, null); 
+0

どうすればいいですか?これは、以下の私のDLLです using System; using System.Collections.Generic; using System.Linq; using System.Text; 名前空間MainLibrary { パブリッククラスClass1 { パブリック静的文字列のHelloWorld(){ リターン "行ってもいい"。 } } } – Jay

+0

実行ファイルをコンパイルし、メインファイルのリソースにファイルとして追加します。その後、 '(bytesArrayOfDll is Resources.testexe)'の上の行を使用すると、実行可能ファイルが起動します。 – bytecode77

0

チェック、

のためのアセンブリを使用することができます。

もう一つ:静的メソッドのみがあなたのコンテキストで

を理にかなって私は@Devils児童アプローチに賛成しています:

あなたのプロセスからDLLを実行する...

あなたの場合設計時に参照できます。

または実行時にリフレクションを使用してください。

、それが静的メソッドでない場合は、Activatorを使用してください(必要に応じて)

お勧めします。

+0

しかし、プログラム* execdll.exe *を使って関数を呼び出す必要があります。私の関数は公開されているようですが、私はまだ同じエラーを受け取ります – Jay

+0

@Jayなぜexecdll.exeを呼び出す必要がありますか? はあなたの方法はプライベートですか、パブリックですか? DLLを投稿できますか? –

+0

私はdllをテストするためにアプリケーションを与えられました。これは私のdllですSir: ** using System; using System.Collections.Generic; System.Linqを使用します。 using System.Text;ネームスペースMainLibrary {public class Class1 {public static String HelloWorld(){return "Good to go"; }}} ** – Jay

関連する問題