2009-11-18 50 views
0

我已经下载了用于编写可以解压缩RAR文件的程序的库。 (http://www.rarlab.com/rar/UnRARDLL.exe)此提供我unrar.dllunrar.hunrar.libUnRDLL.def。我已经复制了C示例代码,并尝试使用Dev-Cpp和Eclipse进行编译。用于DLL(DEF,LIB等)的C++链接器选项

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

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

谷歌建议增加--def UnRDLL.def-lunrar连接器的选项,并且还复制的.lib文件给DEV-CPP \ lib目录。

你能向我解释我做错了什么吗?如果可能的话,告诉我需要在源代码目录中需要什么文件,需要什么样的库,需要添加到项目中的什么,需要什么链接器选项以及我完全错过的其他任何东西。

编辑:我不知道为什么,但我只是手动redid所有设置如上所述,现在它的工作原理。还是要谢谢你的帮助。

回答

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

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

这会帮助你得到持续......早在一天

+0

我以前使用过VSE,我更喜欢Eclipse(或者DevCpp适用于较小的项目)。 我知道使用VSE通常更容易使用DLL,但我更愿意学习如何将它们用于其他IDE。 – thornate 2009-11-18 11:49:21

+0

够公平的。我之前玩过Eclipse和DLL,但我个人觉得它太令人沮丧了。这是一个使用“供应商提供的”工具链确实有助于提高生产力的特殊情况,IMO。 – 2009-11-18 12:29:20

1

,Borland公司用于为从DEF文件创建一个lib文件中提供的工具。

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

+0

你指的是哪个IDE? – thornate 2009-11-19 03:07:30

+0

VC2005。 VC2008会非常相似。 – 2009-11-20 09:46:54

相关问题