我有一点问题:我必须打开一个扩展名为.a
的链接器文件。我使用Dev-C ++。
答案 0 :(得分:22)
.a
个文件是ar
对象(.o
)文件的档案(类似于zip档案)。您可以使用.a
程序列出ar
文件中的文件:
ar t file.a
并提取所有文件:
ar x file.a
答案 1 :(得分:3)
扩展名为.a
的文件是使用Unix文件命名约定的静态库。它们只不过是一个索引的目标代码集合。你没有那么多打开它们(除非你有一个像nm
或gdb
这样的工具可用,如果不是必要的话,可以对库进行合理的处理您可能想要的)告诉链接器在链接时使用它们。对于大多数链接器,将所有库(包括静态和动态/共享)放在链接器命令行上的主程序代码之后并且库的顺序也很重要是非常重要的。
答案 2 :(得分:2)
您是否真的想要打开该文件,或者您希望链接它与您的代码?
默认情况下,Dev-C ++随MinGW / GCC编译器一起安装。如果存档不是专门为与MinGW一起构建的(例如它可能是Cygwin或Linux存档),您将无法将其链接到MinGW生成的代码。
如果存档是MinGW / GCC兼容库,则只需将其链接到您的代码即可。在Dev-C ++中,您需要将存档添加到项目链接器选项,方法是添加存档的完整路径(在项目选项中有一个按钮),或者将存档放在由{{定义的路径中1}}选项,然后添加-L<path>
选项。请注意,归档的id称为libXXX.a,然后-l<archive>
选项将为`-lXXX'; “lib”前缀和“.a”扩展名是隐含的。
如果您只是想检查存档以确定它提供的外部符号,则可以使用nm实用程序。如果你想提取单个目标文件,那么使用ar,虽然我想不出你为什么要这么做的一个很好的理由。
答案 3 :(得分:1)
尝试fstream或fstream file_op("c:\\test.a",ios::in);
,不要忘记包含fstream.h
。