我已经下载了一个库,目的是编写一个可以解压缩RAR文件的程序。 (http://www.rarlab.com/rar/UnRARDLL.exe)这为我提供了unrar.dll,unrar.h,unrar.lib和UnRDLL.def。我复制了C示例代码,并尝试使用Dev-Cpp和Eclipse对其进行编译。

我没有使用DLL的丰富经验,所以我不知道如何处理以下链接器错误:


  UnRDLL.o(.text + 0x151):UnRDLL.c:对RAROpenArchiveEx@4' UnRDLL.o(.text+0x1c0):UnRDLL.c: undefined reference to RARSetCallback @ 12'的未定义引用
  UnRDLL.o(.text + 0x1e2):UnRDLL.c:对RARReadHeader@8' UnRDLL.o(.text+0x2b9):UnRDLL.c: undefined reference to RARProcessFile @ 16'的未定义引用
  UnRDLL.o(.text + 0x2fe):UnRDLL.c:对RARCloseArchive@4' UnRDLL.o(.text+0x366):UnRDLL.c: undefined reference to RAROpenArchiveEx @ 4'的未定义引用
  UnRDLL.o(.text + 0x3d6):UnRDLL.c:对RARSetCallback@12' UnRDLL.o(.text+0x41c):UnRDLL.c: undefined reference to RARReadHeaderEx @ 8'的未定义引用
  UnRDLL.o(.text + 0x4c2):UnRDLL.c:对RARProcessFile@16' UnRDLL.o(.text+0x4fa):UnRDLL.c: undefined reference to RARCloseArchive @ 4'的未定义引用


Google建议将--def UnRDLL.def和-lunrar添加到链接器选项,并将.lib文件复制到Dev-Cpp \ lib目录。

您能告诉我我在做什么错吗?如果可能,请告诉我源文件目录中需要包含哪些文件,库中需要包含哪些文件,需要向项目中添加哪些文件以及需要哪些链接器选项以及我完全错过的其他任何内容。

编辑:我不知道为什么,但是我只是如上所述手动重做了所有设置,现在可以使用了。还是要谢谢你的帮助。

最佳答案

我建议使用Visual Studio Express(可通过提供的链接从Microsoft免费获得)来编译和链接程序。我认为在这种情况下,它比您提到的其他工具要简单一些,尽管这只是我个人的看法。

我建议为您的项目使用与此类似的布局:

\我的项目
  \ src
  \包括
\第三方
  \ bin
  \ lib
  \包括


您的C / C ++源文件将位于myproject\src下,而头文件将位于myproject\include下。您在thirdparty下实时下载的库文件:DLL属于bin.lib文件和.def文件属于lib,而库的头文件属于include

接下来,您需要在Visual Studio Express中配置项目。在项目属性的“链接器”->“常规”下,将“ \thirdparty\lib”添加到“其他库目录”。在链接器->输入下,将unrar.lib添加到其他依赖项。这样可以告诉Visual Studio Express第三方库的名称和位置,以便可以将其链接到您的主应用程序中。

运行程序时,您需要将unrar.dll复制到项目的输出目录中,以便程序可以加载它。

这应该可以帮助您开始...

09-06 16:50