質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C++Builder

C++Builderは、C/C++を用いてアプリ開発できる統合開発環境 (IDE) 。DelphiのC++版です。コンポーネントによるビジュアル開発、高機能なコードエディターなどで生産性の高い開発ができます。

Q&A

0回答

1300閲覧

Virtual-TreeViewコンポーネントビルド時に”[ilink32 エラー] Fatal: ファイル 'SHELL32.A' を開けません”というエラーが出る

MaeharaKenji

総合スコア86

C++Builder

C++Builderは、C/C++を用いてアプリ開発できる統合開発環境 (IDE) 。DelphiのC++版です。コンポーネントによるビジュアル開発、高機能なコードエディターなどで生産性の高い開発ができます。

0グッド

0クリップ

投稿2021/02/17 04:53

編集2021/02/23 13:52

現在RAD Studio等を勉強中です。

自宅のPCにC++ Builder 10.3 Community Editionをインストールしています。
Virtual-TreeViewコンポーネントを追加したいと思い、サイトからダウンロードして、INSTALL.txt

C++ Builder XE3 and higher Installation ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Open the project group "Packages\CBuilder XE*\VirtualTreeView.groupproj" that is closest to your version. 2. Right click on "VirtualTreesR*.bpl" and click "Build" 3. Right click on "VirtualTreesD*.bpl" and click "Install" 4. Go to "Tools > Options > Environment Options > Delphi Options > Library > Library Path > [...]" Browse to the "Source" folder of VirtualTreeView, press "OK", "Add", "OK", "OK" 5. Go to "Tools > Options > Environment Options > C++ Options > Paths and Directories" a) Click "Library Path > [...]" Browse to the "Source" folder of VirtualTreeView, press "OK", "Add", "OK" b) Click "System Include path > [...]" Browse to the "Source" folder of VirtualTreeView, press "OK", "Add", "OK", "OK" 6. If you target Win64 you need to build VirtualTreesR*.bpl also for the platform "Win64"

このテキストファイルの手順に沿って Virtual-TreeView/Packages/CBuilder 10.2/
このフォルダ内のグループプロジェクトファイルを開いて、

2. Right click on "VirtualTreesR*.bpl" and click "Build"

この2番でVirtualTreeCR240.bplでビルドを実行したところ、次のようなエラーが発生しました。

ilink32 コマンド ライン c:\program files (x86)\embarcadero\studio\20.0\bin\ilink32.exe -G8 -LRelease;"c:\program files (x86)\embarcadero\studio\20.0\lib\Win32\release\JA"; "c:\program files (x86)\embarcadero\studio\20.0\lib\release";"C:\Program Files (x86)\Embarcadero\DelphiXE5\lib\win32\release\psdk";....\Source; "c:\program files (x86)\embarcadero\studio\20.0\lib";"c:\program files (x86)\embarcadero\studio\20.0\lib\Win32";"c:\program files (x86)\embarcadero\studio\20.0\lib\Win32\Release";"c:\program files (x86)\embarcadero\studio\20.0\lib\win32\release";"c:\program files (x86)\embarcadero\studio\20.0\lib\win32\release\psdk";C:\Users\Public\Documents\Embarcadero\Studio\20.0\DCP -jRelease;"c:\program files (x86)\embarcadero\studio\20.0\lib\Win32\release\JA";"c:\program files (x86)\embarcadero\studio\20.0\lib\release";"C:\Program Files (x86)\Embarcadero\DelphiXE5\lib\win32\release\psdk";....\Source;"c:\program files (x86)\embarcadero\studio\20.0\lib";"c:\program files (x86)\embarcadero\studio\20.0\lib\Win32";"c:\program files (x86)\embarcadero\studio\20.0\lib\Win32\Release";"c:\program files (x86)\embarcadero\studio\20.0\lib\win32\release";"c:\program files (x86)\embarcadero\studio\20.0\lib\win32\release\psdk"; C:\Users\Public\Documents\Embarcadero\Studio\20.0\DCP -lC:\Users\Public\Documents\Embarcadero\Studio\20.0\DCP -dShell32.dll -Gi -aa -D"VirtualTree CBuilder runtime package" -V5.0 -Gpr -GBVirtualTreesCR -Tpp c0pkg32 rtl.bpi vcl.bpi vclx.bpi memmgr.lib sysinit.obj Release\VirtualTreesCR.obj Release\VirtualTrees.Accessibility.obj Release\VirtualTrees.AccessibilityFactory.obj Release\VirtualTrees.Actions.obj Release\VirtualTrees.Classes.obj Release\VirtualTrees.ClipBoard.obj Release\VirtualTrees.Export.obj Release\VirtualTrees.HeaderPopup.obj Release\VirtualTrees.obj Release\VirtualTrees.StyleHooks.obj Release\VirtualTrees.Utils.obj Release\VirtualTrees.WorkerThread.obj , C:\Users\Public\Documents\Embarcadero\Studio\20.0\BPL\VirtualTreesCR240.bpl , C:\Users\Public\Documents\Embarcadero\Studio\20.0\BPL\VirtualTreesCR.map , shell32.a shell32.lib import32.lib cp32mt.lib , , VirtualTreesCR.res [ilink32 エラー] Fatal: ファイル 'SHELL32.A' を開けません 失敗 経過時間: 00:00:01.7

このエラーの回避方法をご教示の程宜しくお願い致します。

(2/23追記)
お世話になっております。
その後も、C++ Builder 10.3 Community EditionにVirtual-TreeViewをインストールしたいと思い、再度ダウンロードして
Virtual-TreeView/Packages/CBuilder 10.2/
この中のプロジェクトをビルド、VirtualTreesCD.bplでインストールしてみたのですが、インストール時に
やはりエラーが出ます。

(エラー内容)

プロジェクトの依存関係を確認中... VirtualTreesCD.cbproj をコンパイル中 (Release, Win32) dcc32 の "....\Design\VirtualTreesReg.pas" コマンド ライン c:\program files (x86)\embarcadero\studio\20.0\bin\dcc32.exe -Z -AGenerics.Collections=System.Generics.Collections; Generics.Defaults=System.Generics.Defaults;WinTypes=Winapi.Windows;WinProcs=Winapi.Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE -DNDEBUG -I....\source;"c:\program files (x86)\embarcadero\studio\20.0\lib\Win32\release";"C:\Users\kmaeh\OneDrive\ドキュメント\Embarcadero\Studio\20.0\Imports"; "c:\program files (x86)\embarcadero\studio\20.0\Imports";C:\Users\Public\Documents\Embarcadero\Studio\20.0\Dcp;"c:\program files (x86)\embarcadero\studio\20.0\include";C:\Users\Public\Documents\VirtualTreeView\Source -LEC:\Users\Public\Documents\Embarcadero\Studio\20.0\BPL -NURelease -NSWinapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;System;Xml;Data;Datasnap;Web;Soap;Vcl -O....\source;"c:\program files (x86)\embarcadero\studio\20.0\lib\Win32\release";"C:\Users\kmaeh\OneDrive\ドキュメント\Embarcadero\Studio\20.0\Imports";"c:\program files (x86)\embarcadero\studio\20.0\Imports";C:\Users\Public\Documents\Embarcadero\Studio\20.0\Dcp;"c:\program files (x86)\embarcadero\studio\20.0\include"; C:\Users\Public\Documents\VirtualTreeView\Source -R....\source;"c:\program files (x86)\embarcadero\studio\20.0\lib\Win32\release"; "C:\Users\kmaeh\OneDrive\ドキュメント\Embarcadero\Studio\20.0\Imports";"c:\program files (x86)\embarcadero\studio\20.0\Imports"; C:\Users\Public\Documents\Embarcadero\Studio\20.0\Dcp;"c:\program files (x86)\embarcadero\studio\20.0\include"; C:\Users\Public\Documents\VirtualTreeView\Source -U....\source;"c:\program files (x86)\embarcadero\studio\20.0\lib\Win32\release"; "C:\Users\kmaeh\OneDrive\ドキュメント\Embarcadero\Studio\20.0\Imports";"c:\program files (x86)\embarcadero\studio\20.0\Imports"; C:\Users\Public\Documents\Embarcadero\Studio\20.0\Dcp;"c:\program files (x86)\embarcadero\studio\20.0\include"; C:\Users\Public\Documents\VirtualTreeView\Source -JPHNE -NBC:\Users\Public\Documents\Embarcadero\Studio\20.0\DCP -NHC:\Users\Public\Documents\Embarcadero\Studio\20.0\hpp\Win32 -NORelease --BCB -CG -LUDesignIDE ....\Design\VirtualTreesReg.pas [DCC 致命的エラー] VirtualTreesReg.pas(15): F2048 ユニットの形式が無効です: 'Release\VirtualTrees.dcu' - 必要なバージョン: 33.0、Windows Unicode(x86) 検出されたバージョン: 33.0、Windows Unicode(x64) 失敗 経過時間: 00:00:00.2

これを解決する方法ありますでしょうか?

(追記2)
いろいろと教えて頂いて頂き助かります。
Win32/64でのクリーンアップの実施など行ってみたのですが、やはり

(エラー内容)
[ilink32 エラー] Error: 未解決の外部シンボル 'OpenThemeDataForDpi' が D:\VIRTUAL-TREEVIEW-MASTER\PACKAGES\CBUILDER 10.2\RELEASE\VIRTUALTREES.OBJ から参照されています

やはりこのエラーが出てしまいます。
このインストール方法やエラーの状況を動画にしてみました。ご確認頂けると助かります。
他に必要なことなどお気づきの点ありましたら、ご教示お願い致します。
https://youtu.be/VKL8A_Y3Th8

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

FKD

2021/02/17 07:44

64bit版コンパイラはインストールしたのでしょうか?
MaeharaKenji

2021/02/17 07:54

C:\Program Files (x86)のフォルダにのみEmbarcaderoのフォルダがあるので32bit版のみのインストールだと思います。
FKD

2021/02/17 08:09

それでは判断付きません。 EmbarcaderoのIDEやコンパイラは32bitプログラムでなので、コンパイラのインストール状況に応じてインストール先が変わるなんてことはありません。 見るならlibフォルダ内のwin64有無とかですが、返答の感じからするとインストールしてなさそう? インストーラの初期値は、(何故か)64bitコンパイラがインストールされないので、まずそこから対応願います。
FKD

2021/02/17 08:12

ちなみに、64bitでコンパイルする予定がないなら、現状のままでWin32プラットホームのみビルドしてインストールでOKですよ。
FKD

2021/02/17 10:33

試してみた所、64bitコンパイラをインストールしないと、32版もコンパイル通りませんでした。 64bit版コンパイラ未導入の場合、このプロジェクト構成ではShell32.dllのインポートライブラリ切替部分がうまく動かないようです。
MaeharaKenji

2021/02/18 00:15

回答頂きありがとうございます。 64bit版のインストールはC++ builderの再インストールすればよいのでしょうか?
FKD

2021/02/18 02:13

インストールくらい調べられないのでしょうか? とりえあず、ツール-プラットホームの管理で機能追加/削除できます。 メニューがない場合は再インストールでしょうね。 (たぶん)新規インストールはDelphiと一緒だと思います。 プラットホーム選択で64bitを追加しなかったのだと思われます。 https://qiita.com/CYonezawa/items/f0a14357b77c5ab19ca6
MaeharaKenji

2021/02/18 08:18

回答頂きありがとうございます。 ツール-プラットホームの管理で機能追加で64bit版インストールできました。 Virtual-TreeView/Packages/CBuilder 10.2/ このフォルダ内のプロジェクトを再度起動して、VirtualTreesCR240.bplをビルドしたところ、エラーなくビルド完了しました。 ただ、次の 3. Right click on "VirtualTreesD*.bpl" and click "Install" これをVirtualTreesCD240.bplで実施すると、 [ilink32 エラー] Fatal: ファイル 'VIRTUALTREESCR.BPI' を開けません このようなエラーが発生しました。 これの解決方法はどうすればよいでしょうか?
FKD

2021/02/18 08:40

繰り返しになりますが、C++BuilderのIDE等は32bitプログラムです。 ですので、コンポーネント登録に必要なのは32bit版の各パッケージです。 そのあたりを踏まえて、Install.txt手順を鵜呑みにせず、作業してみてください。 また、ビルドNGだった時のプロジェクトを保存しているようであれば、壊れていると思うので元に戻した方が良いと思います。
MaeharaKenji

2021/02/22 17:39

お世話になっております。 その後も、C++ Builder 10.3 Community EditionにVirtual-TreeViewをインストールしたいと思い、再度ダウンロードして Virtual-TreeView/Packages/CBuilder 10.2/ この中のプロジェクトをビルド、VirtualTreesCD.bplでインストールしてみたのですが、インストール時に やはりエラーが出ます。 (エラー内容) プロジェクトの依存関係を確認中... VirtualTreesCD.cbproj をコンパイル中 (Release, Win32) dcc32 の "..\..\Design\VirtualTreesReg.pas" コマンド ライン (中略) [DCC 致命的エラー] VirtualTreesReg.pas(15): F2048 ユニットの形式が無効です: 'Release\VirtualTrees.dcu' - 必要なバージョン: 33.0、Windows Unicode(x86) 検出されたバージョン: 33.0、Windows Unicode(x64) 失敗 経過時間: 00:00:00.2 これを解決する方法ありますでしょうか?
FKD

2021/02/23 07:16 編集

エラー内容を見る気はありますか? > 必要なバージョン: 33.0、Windows Unicode(x86) > 検出されたバージョン: 33.0、Windows Unicode(x64) メッセージそのままで、Win32ビルド時にWin64用にコンパイルしたDCU(C++でいう*.objもしくは*.o)を参照しています。 #32bitプログラムと64bitプログラムの違いが分かってないって事はないですよね? またVirtualTreesCRプロジェクトのRequiresに、VirtualTreesCDが入っているので、 VirtualTreesCRをビルド&インストールするにはVirtualTreesCDのWin32用モジュールが必要です。
MaeharaKenji

2021/02/23 07:56

回答頂きありがとうございます。 ”VirtualTreesCDのWin32用モジュール”ってどこかでダウンロードできるところとかないですよね?・・・
FKD

2021/02/23 08:13

そこまで理解できないような事ですか? プロジェクトグループ内にあるでしょう?Win32でビルドしてください。 出力先がWin32/64で重複していれば上書きされている可能性もあります。
MaeharaKenji

2021/02/23 08:28

もう一度、 Virtual-TreeView/Packages/CBuilder 10.2/ こちらのフォルダで、まずReleaseフォルダを削除してから、 windows 32ビットを確認してから、 VirtualTreesCR240.bplで右クリック--->ビルド実行 そうすると次のようなエラーが発生します。 (エラー内容) [ilink32 エラー] Error: 未解決の外部シンボル 'OpenThemeDataForDpi' が D:\VIRTUAL-TREEVIEW-MASTER\PACKAGES\CBUILDER 10.2\RELEASE\VIRTUALTREES.OBJ から参照されています また、このエラーが出ていてもReleaseフォルダが作成されているため、とりあえず VirtualTreesCD240.bplで右クリック--->インストールを実行すると 次のようなえらーが発生します。 (エラー内容) パッケージ C:\Users\Public\Documents\Embarcadero\Studio\20.0\BPL\VirtualTreesCD240.bplを読み込めません。%1は有効なWin32アプリケーションではありません。 このようなエラーが現在発生するのですが、解決方法などありますでしょうか?
FKD

2021/02/23 09:26

リンクエラーはビルド失敗なので、先に進むのが間違っています。 うまくいっていなかった時の痕跡をなるべく消してからVirtualTreesCRのビルドを成功させてください。 (素のC++Builder Community版ではすんなり通りました) この感じだと、Releaseフォルダの削除だけではだめなので、 ・両プロジェクトを右クリックでクリーンアップする(Win32/64共に?) ・C:\Users\Public\Documents\Embarcadero\Studio\20.0\に出力結果があるのでクリーンアップで消えてないようなら消す ・Install.txtの参照パスを追加しているようなら消す ・RAD Studio用のVirtualTreeViewのインストール作業していたら内容を戻す #こちらでは何をしていたか分からないので、それっぽい項目をならべました
MaeharaKenji

2021/02/23 13:50

いろいろと教えて頂きありがとうございます。 Win32/64でのクリーンアップの実施など行ってみたのですが、やはり (エラー内容) [ilink32 エラー] Error: 未解決の外部シンボル 'OpenThemeDataForDpi' が D:\VIRTUAL-TREEVIEW-MASTER\PACKAGES\CBUILDER 10.2\RELEASE\VIRTUALTREES.OBJ から参照されています やはりこのエラーが出てしまいます。 このインストール方法やエラーの状況を動画にしてみました。ご確認頂けると助かります。 他に必要なことなどお気づきの点ありましたら、ご教示お願い致します。 https://youtu.be/VKL8A_Y3Th8
MaeharaKenji

2021/02/24 01:56

お世話になっております。 >(素のC++Builder Community版ではすんなり通りました) 回答頂いた内容ですが、C++Builder Community版は10.3でしょうか? 以前、C++ BuilderやRAD StudioはVersionが変わるごとに、コンポーネントもそのVersionにあったものに変更していかないといけないということを聞いたことがあるのですが、 D:\VIRTUAL-TREEVIEW-MASTER\PACKAGES\CBUILDER 10.2\ 現在インストールしようとしているコンポーネントが10.2用だからということがエラーの原因ということでしょうか?
FKD

2021/02/24 03:11

こちらのCommunity版は10.3です。 すでにtaratailでやるような内容ではないですが・・・ > Versionにあったものに変更 そのためにビルドしているのですが、10.3対応は自力でやる必要があります。 仮にインストール成功したとしても、動作に問題が出る可能性もありますが、 Delphi版は最新の10.4系まで対応しているので、大修正が必要という事はないと思います。 (このあたりは、GitHubのトップページでC++Builderのメンテナを募集しているのでお察しです) 本題ですが「OpenThemeDataForDpi」はWindiwsSDKのuser32.dll(user32.libが必要)に含まれます。 「libファイルがないというエラー」ではなく、未解決の外部シンボルなので、 異なるバージョンのuser32.libファイルがリンクされていそうです。(古いやつ?) ですので、WindowsSDKのLibが正しく参照できるようになっているか確認されてみてはいかがでしょうか。 また、なにかしらのXE5がインストールされているなら、プロジェクトオプションの参照パスからXE5関連を削除した方がよさそうです。(マイグレーションし忘れのゴミが残っている&プロジェクトの設定が優先なので効いてくる) ※C++Builderのlibファイルが正常にリンクされているなら、この問題はでないはずです。 従来のコンパイラなら以下のパスのlib C:\Program Files (x86)\Embarcadero\Studio\20.0\lib\win32\release\psdk 新コンパイラならなら以下のパスのlib C:\Program Files (x86)\Embarcadero\Studio\20.0\lib\win32c\release\psdk C++Builderの設定初期値は以下の感じです(ツール-オプションから設定するやつ) 従来のコンパイラ $(BDSLIB)\win32\release;$(BDSLIB)\win32\release\psdk 新コンパイラ $(BDSLIB)\win32c\release;$(BDSLIB)\win32c\release\psdk
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問