web-dev-qa-db-ja.com

.aファイルを開く方法

少し問題があります。拡張子が.aのリンカーファイルを開く必要があります。 Dev-C++を使用しています。

17
Mgst

.aファイルは、オブジェクト(.o)ファイルのarアーカイブ(Zipアーカイブのようなもの)です。 arプログラムを使用して、.aファイル内のファイルを一覧表示できます。

ar t file.a

そして、すべてのファイルを抽出します。

ar x file.a
24
el.pescado

.a拡張子は、Unixファイルの命名規則を使用した静的ライブラリです。これらは、オブジェクトコードのインデックス付きコレクションにすぎません。それらをあまり開かない(nmgdbのようなツールが利用可能でない限り、どちらもcanライブラリで賢明なことを行う場合リンクするときにそれらを使用するようにリンカーに指示するように、必ずしもあなたが望むかもしれないものではありません。ほとんどのリンカーでは、リンカーのコマンドラインでメインプログラムコードの後に​​すべてのライブラリ(静的および動的/共有の両方)を配置することが重要であり、ライブラリの順序も重要です。

3
Donal Fellows

本当にファイルを開くしたいのか、それともリンクあなたのコードでそれ?

Dev-C++は、デフォルトでMinGW/GCCコンパイラと共にインストールされます。アーカイブがMinGWで動作するように特別に構築されていない場合(たとえば、CygwinまたはLinuxアーカイブの場合)、MinGWで生成されたコードにアーカイブをリンクすることはできません。

アーカイブがMinGW/GCC互換ライブラリの場合は、コードにリンクするだけです。 Dev-C++では、アーカイブへのフルパスを追加するか(プロジェクトオプションにそのためのボタンがあります)、または-L<path>オプション、次に-l<archive>オプションを追加します。アーカイブの名前がlibXXX.aである場合、-l<archive>オプションは「-lXXX」になります。 「lib」接頭辞と「.a」拡張子は暗黙的です。

アーカイブを調べて、アーカイブが提供する外部シンボルを判別したいだけの場合は、 nm ユーティリティを使用できます。個々のオブジェクトファイルを抽出する場合は、 ar を使用しますが、どちらかを実行する理由は考えられません。

2
Clifford

fstream 、またはfstream file_op("c:\\test.a",ios::in);を試して、fstream.hを含めることを忘れないでください。

1
KMån