C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

.Netで作成されたDLLをVB6から呼び出し

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■83636 / inTopicNo.1)  .Netで作成されたDLLをVB6から呼び出し
  
□投稿者/ mako (4回)-(2017/03/31(Fri) 14:12:07)

分類:[.NET 全般] 

お世話になります。

.Netで作成したDLLをVB6環境から呼び出そうとしたのですが、
「オートメーションエラーです。指定されたファイルがみつかりません。 (-2147024894)」
のエラーとなります。手順は間違ってはいないと思うのですが、
もし間違いなどがありましたらご指摘をお願いできないでしょうか?

以下に手順と環境を記載します。

●Net側
OS:Windows Server 2012 R2 64Bit
ビルド環境:Visual Studio 2015
ビルド方法:対象のFrameWorkを.Net Framework4
対象のCPUをx86
COM相互運用機能の登録にチェック

●VB6側
OS:Windows XP
ビルド環境: MicroSoft Visual Basic6.0(SP6)
DLL配置場所:C:¥Windows¥System32にDLLとTLBを配置
レジストリ登録方法:regasm 対象.dll /TLB 対象.TLB






引用返信 編集キー/
■83637 / inTopicNo.2)  Re[1]: .Netで作成されたDLLをVB6から呼び出し
□投稿者/ mako (6回)-(2017/03/31(Fri) 14:54:04)
補足です。

regasm自体は以下のメッセージが出ていたので
問題なく登録出来ていると思われます。

Types registered successfully
Assembly exported to 'C:\WINDOWS\system32\XXXX.tlb', and the type library
was registered successfully
引用返信 編集キー/
■83638 / inTopicNo.3)  Re[1]: .Netで作成されたDLLをVB6から呼び出し
□投稿者/ 魔界の仮面弁士 (1231回)-(2017/03/31(Fri) 15:19:21)
No83636 (mako さん) に返信
> 「オートメーションエラーです。指定されたファイルがみつかりません。 (-2147024894)」

.NET Frmaework 4 はインストール済みであり、
.NET Frmaework 4 付属の RegAsm.exe で登録されているわけですね。


> 以下に手順と環境を記載します。

DLL はシステムフォルダではなく、「EXE の置いてある場所」に配置します。
複数のアプリから使いたい場合は、各フォルダに DLL をコピーしてください。


DLL の配置先をどうしても一箇所にまとめたいのであれば、VB6 アプリそれぞれに
『アプリケーション構成ファイル(Project1.exe.config)』を用意して、
そこの codebase 属性にて DLL の位置を指定することになります。


VB6 側に .config を用意せずに呼べるようにしたい場合は、該当 DLL に「署名」して
アセンブリに厳密名を付与し、その DLL を gacutil.exe 等を用いて
グローバル アセンブリ キャッシュに登録しておく必要があります。
DLL を system32 (又はパスが通っているフォルダ)に配置できるのは、このケースのみです。


http://www.ijupiter.co.jp/world/dc_interrop/dotnet_com_interrop.html
http://office-yone.com/blog/call_dotnet_from_vb6/
引用返信 編集キー/
■83640 / inTopicNo.4)  Re[2]: .Netで作成されたDLLをVB6から呼び出し
□投稿者/ mako (7回)-(2017/03/31(Fri) 16:08:40)
魔界の仮面弁士様

ご返信ありがとうございます。
紹介していただいたURLも参考にして
やっていきたいと思います。


No83638 (魔界の仮面弁士 さん) に返信
> ■No83636 (mako さん) に返信
>>「オートメーションエラーです。指定されたファイルがみつかりません。 (-2147024894)」
>
> .NET Frmaework 4 はインストール済みであり、
> .NET Frmaework 4 付属の RegAsm.exe で登録されているわけですね。
>
>
>>以下に手順と環境を記載します。
>
> DLL はシステムフォルダではなく、「EXE の置いてある場所」に配置します。
> 複数のアプリから使いたい場合は、各フォルダに DLL をコピーしてください。
>
>
> DLL の配置先をどうしても一箇所にまとめたいのであれば、VB6 アプリそれぞれに
> 『アプリケーション構成ファイル(Project1.exe.config)』を用意して、
> そこの codebase 属性にて DLL の位置を指定することになります。
>
>
> VB6 側に .config を用意せずに呼べるようにしたい場合は、該当 DLL に「署名」して
> アセンブリに厳密名を付与し、その DLL を gacutil.exe 等を用いて
> グローバル アセンブリ キャッシュに登録しておく必要があります。
> DLL を system32 (又はパスが通っているフォルダ)に配置できるのは、このケースのみです。
>
>
> http://www.ijupiter.co.jp/world/dc_interrop/dotnet_com_interrop.html
> http://office-yone.com/blog/call_dotnet_from_vb6/
引用返信 編集キー/
■83692 / inTopicNo.5)  Re[2]: .Netで作成されたDLLをVB6から呼び出し
□投稿者/ mako (8回)-(2017/04/03(Mon) 09:06:40)
No83637 (mako さん) に返信
> 補足です。
>
> regasm自体は以下のメッセージが出ていたので
> 問題なく登録出来ていると思われます。
>
> Types registered successfully
> Assembly exported to 'C:\WINDOWS\system32\XXXX.tlb', and the type library
> was registered successfully
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ