お世話になっております。
以前、「64bitでタイプライブラリを読み込むには?」というタイトルで質問させていただいたkkoという者です。
現在、以前に質問させていただいた内容を進めて、タイプライブラリの64ビット対応化までは行えましたが、
ターゲットプラットフォームを64ビットにして、実行すると下記のアプリケーションエラーが発生します。
「EOleSysError がモジュール(実行ファイル名)の00000000000F2B1Bで発生しました。指定されたファイルが見つかりません。」
なお、ターゲットプラットフォームを32ビットにすると問題なく実行できます。
上記の件について、どなたか回避方法がわかる方がいましたら、教えて下さい。
なお、再現手順は以下の通りとなります。
(1).NETの環境でGUIをもつDLLを作成する。DLL作成には以下のURLのソースを元に、COM相互運用機能の登録で、
DLLを作成する。なお、開発環境はVisual Studio 2010(C#)を使い、ターゲットプラットフォームは、
AnyCPUにした。
参考ソースURL
http://www5.plala.or.jp/atata/download/axcontrol.net.lzh
(2)作成したDLLからDelphiにインポートするためのファイルを出力するため、作成したDLLを
64ビット版Tlibimp.exeがあるフォルダに保存し、インポートのためのファイルを下記のコマンドで出力する。
.\bin64\tlibimp.exe -P 作成したDLL
(3)出力したファイル(Accessibility_TLB、mscorlib_TLB、System_TLB、System_Windows_Forms_TLB、
(作成したDLL名)_TLB)を任意のフォルダに保存し、Delphiの[ファイルメニュー|コンポーネント]から、
コンポーネントのインストールを選択し、上記で出力したファイルを選択して、新規パッケージを作成する。
(4)新規パッケージを作成後は、下記のURLの手順を参考に、コンポーネントの64ビット化を行う。
http://ht-deko.minim.ne.jp/delphiforum/?vasthtmlaction=viewtopic&t=1222
(5)64ビット対応まで出来たら、[ファイル|新規作成|VCLフォームアプリケーション]を選択して、
64ビット対応化したコンポーネントを貼り付けるためのフォームを作成する。
(6)作成したフォームのプロジェクトマネージャー内にある、ターゲットプラットフォームで、
右クリックを押し、プラットフォームの追加を選択して、64ビットのターゲットプラットフォームを追加する
(7)ターゲットプラットフォームをダブルクリックして64ビットにした後、作成したコンポーネントを貼りつけて、
ビルドして実行する
(8)ビルドは通るものの、EOleSysError〜というアプリケーションエラーが発生し、終了してしまう
以上、長文となりまして申し訳ございませんが、手順等に間違いがあるなどの心当たりがある方は、
ご助言をしていただければ幸いです。
放置なのかどうかは不明なので.とりあえず.
>EOleSysError がモジュール(実行ファイル名)の00000000000F2B1Bで発生しました。指定されたファイルが見つかりません。」
一般的に言うと,EOleSysError のエラーの特定は困難です.
メッセージ通りであれば,間違いなく必要なファイルがありません.
ファイルがないというのは
(1) 本当にファイルがない
(2) ディクス上にファイルはあるが,システムまたは Delphi では認識できない
ということになります.
(2) の場合は,更に システムと Delphi のパスの設定等に分かれます.
ます,作成した XXXX_TLB.pas を 32 ビット環境で動作するか確認してみてくたさい.
この時は,XXX_TLB.pas は特に作成し直す必要はありませ.32 ビットと 64 ビットは兼用です.
このテストによって,システム側か,Delphi 側かを特定することが可能になるかも知れません.
釈迦に説法かも知れませんが,
タイプライブラリの取り込みで作成したものは,一般には COM オブジェクトの操作です.
したがって,DLL 等をシステムに登録する必要がある場合があります.
(不要の場合もあります.その DLL の説明で確認することになります)
32 アプリで使用するときは 32 ビット用として,64 ビットで使用する時は 64 ビット用としてです.
DLL の置き場所も 32 ビットアプリと 64 ビットアプリでは違います.
>作成した XXXX_TLB.pas を 32 ビット環境で動作するか確認してみてくたさい.
当然ですが,32 ビット版の DLL がないとテストできません.
ですが,前の質問で,32 ビットから 64 ビットのアプリへの移行ということでしたので.
# 以下に移動したようです.おそらく,多分.
# http://qa.itmedia.co.jp/qa8549153.html
ツイート | ![]() |