4

アプリケーション内で別のサードパーティの.NETdllを呼び出すdllをc#.netに作成しました。これは、以下のコードを使用してc#.NETで記述されたコンソールアプリケーションでテストした場合にも正常に機能します。

 Assembly u = Assembly.LoadFrom(dllLocation);
 Type t = u.GetType("MyLIB.CLass");
 MethodInfo m = t.GetMethod("Method");
 object[] myparam = new object[1];
 myparam[0] = fileLocation;
 result = (string)m.Invoke(null, myparam);

一部のファイルは、dllが最初にロードされた場所に次を使用してロードされることに注意してください。

  string path = Assembly.GetExecutingAssembly().Location;
  path = Path.GetDirectoryName(path);

しかし、問題は、VB6を使用して呼び出そうとすると、サードパーティのdllを読み込めないというエラーが発生することです。何が起こっているのかわからないようですので、助けてください。

4

2 に答える 2

6

.NETアセンブリをCOMに公開するために、詳細を説明したいと思います。

を生成する必要がありますtbl - type library

を使用してRegAsm /tlb: MyLIB.tlb MyLIB.dll

.NETタイプをCOMに公開し、それに対処するためのガイドラインがあります。ComVisibleAttributeの宣言など、 COMに表示されるパブリックデフォルトコンストラクターが必要です。

これは、 VisualBasic6.0からVisualBasic.NETまたはVisualBasic2005アセンブリを呼び出す方法で参照できます。

于 2012-09-17T18:53:09.847 に答える
3

VB6から呼び出すには、アセンブリでComVisibleAttributeを指定する必要があります。

于 2012-09-17T18:45:23.170 に答える