gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 01:12:31 24 4
gpt4 key购买 nike

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

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

UnRDLL.o(.text+0x151):UnRDLL.c: undefined reference to RAROpenArchiveEx@4'
UnRDLL.o(.text+0x1c0):UnRDLL.c: undefined reference to
RARSetCallback@12' UnRDLL.o(.text+0x1e2):UnRDLL.c: undefined reference to RARReadHeader@8'
UnRDLL.o(.text+0x2b9):UnRDLL.c: undefined reference to
RARProcessFile@16' UnRDLL.o(.text+0x2fe):UnRDLL.c: undefined reference to RARCloseArchive@4'
UnRDLL.o(.text+0x366):UnRDLL.c: undefined reference to
RAROpenArchiveEx@4' UnRDLL.o(.text+0x3d6):UnRDLL.c: undefined reference to RARSetCallback@12'
UnRDLL.o(.text+0x41c):UnRDLL.c: undefined reference to
RARReadHeaderEx@8' UnRDLL.o(.text+0x4c2):UnRDLL.c: undefined reference to 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 提供的链接免费获得)来编译和链接您的程序。我认为在这种情况下它比您提到的其他工具要简单一些,尽管这只是我个人的看法。

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

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

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

接下来,您需要在 Visual Studio Express 中配置您的项目。在您的项目属性中,在 Linker -> General 下,将 \thirdparty\lib 添加到 Additional Library Directories。在 Linker -> Input 下,将 unrar.lib 添加到 Additional Dependencies。这会告诉 Visual Studio Express 您的第三方库的名称和位置,以便它可以将其链接到您的主应用程序中。

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

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

关于DLL 的 C++ 链接器选项(DEF、LIB 等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1755327/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com