DLL的C ++链接器选项(DEF,LIB等)

时间:2009-11-18 11:19:49

标签: c++ dll

我已经下载了一个库,用于编写可以解压缩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目录。

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

编辑:我不知道为什么,但我只是手动重新设置如上所述的所有设置,现在它可以正常工作。无论如何,谢谢你的帮助。

2 个答案:

答案 0 :(得分:2)

我建议使用Visual Studio Express(可从Microsoft提供的链接免费获得)来编译和链接您的程序。我认为这个例子比你提到的其他工具更简单,虽然这只是我个人的看法。

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

\myproject
  \src
  \include
\thirdparty
  \bin
  \lib
  \include

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

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

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

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

答案 1 :(得分:1)

在当天,Borland过去常常提供一个从def文件创建lib文件的工具。

在现代世界中,最好的办法是在项目 - >属性配置道具 - >链接器 - >输入 - >附加依赖项下将lib文件添加到项目中。 您可能需要将lib文件位置添加到Props-> Linker-> General-> Additional Lib Dirs。 确保DLL在您的路径上或使用可执行文件复制。