我已经下载了一个库,用于编写可以解压缩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目录。
你能告诉我我做错了什么吗?如果可能,请告诉我源代码目录中需要哪些文件,库需要什么,需要添加到项目中的内容以及需要的链接器选项,以及我完全错过的任何其他内容编辑:我不知道为什么,但我只是手动重新设置如上所述的所有设置,现在它可以正常工作。无论如何,谢谢你的帮助。
答案 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在您的路径上或使用可执行文件复制。