【发布时间】:2011-10-21 15:14:39
【问题描述】:
这个问题肯定在某个地方得到了回答,但我找不到。我已经编写 Java 十多年了,我的 C 经验是在 Unix 上的,所以我在这里有点意见。根据我的 Unix 经验,其他人编写了 makefile,它就可以正常工作。
我从feep 下载了libtar-1.2.11 的C 源代码,并从cygwin 内部运行make。这创建了一个.a 文件和一个.exe 文件。 EXE 文件似乎本质上是在 Windows 上运行的 tar,但我想要的是让库在我自己的代码中读取和处理文件。
如果我没记错的话,那些应该在.a 文件中(存档??),这需要链接到我可以从我的 C++ 程序中使用的库中。所以我正在寻找一种方法来做到这一点。
我正在编写一个将使用.tgz 文件的库,所以我想使用这个库。我想我想把 libtar 变成一个 DLL 并自己创建一个 DLL 用于其他语言。
那么,如何将我的.a 文件转换为其他应用程序可用的文件,以及如何从我的代码中访问它?
【问题讨论】:
-
我不熟悉转换 .a -> .dll 的机制。但是,您可以在 Windows 机器上编译源代码以生成 .dll。
-
您不会使用
.a文件来创建 DLL,而是直接使用源代码。 -
@MarkRansom 是对的,您需要重新编译。
.a文件一般不包含与位置无关的代码 (PIC),因此无法动态链接到包含的代码。 -
除了在 Windows 上,它们会这样做,因为代码总是与位置无关(-fPIC 是多余的)。