在开发过程中,有时我们只有 DLL 文件(如 libcrypto-1_1-x64.dll
),但需要对应的 .lib
文件来链接到我们的项目中。本文将详细介绍如何使用 pexports.exe
和 Visual Studio 的工具从现有的 DLL 文件生成所需的 .lib
文件,并在 Qt 工程中引用。
前言
当我们使用第三方库时,通常需要 .lib
文件来在编译时链接。如果只有 DLL 而没有 .lib
文件,可以通过以下方法生成。
工具准备
- pexports.exe:一个用于从 DLL 导出符号的工具。可以从 Mingw-w64 或其他可信来源下载。
- Visual Studio:本文以 Visual Studio 2019 为例,需要使用其中的
lib
工具。
步骤详解
1. 确保工具和 DLL 文件在同一目录
将 pexports.exe
和 libcrypto-1_1-x64.dll
放在同一目录下,本文以 D:\Qt_Project\AESencryptor\
为例。
2. 打开命令提示符
建议使用 Visual Studio 开发者命令提示符,这样所有需要的开发工具都已在路径中。
- 在开始菜单中,找到 "Visual Studio 2019" 文件夹。
- 打开 "x64 Native Tools Command Prompt for VS 2019"。
如果没有,可以使用普通的命令提示符,但需要使用工具的全路径。
3. 导航到工作目录
在命令提示符中输入:
cd /d D:\Qt_Project\AESencryptor\
4. 使用 pexports.exe
生成 .def
文件
运行以下命令:
pexports.exe libcrypto-1_1-x64.dll > libcrypto.def
执行后,将在当前目录下生成 libcrypto.def
文件。
5. 使用 lib
工具生成 .lib
文件
运行以下命令:
lib /def:libcrypto.def /machine:x64 /out:libcrypto.lib
参数说明:
/def:libcrypto.def
:指定输入的定义文件。/machine:x64
:目标平台为 64 位。如果是 32 位 DLL,使用/machine:x86
。/out:libcrypto.lib
:指定输出的.lib
文件名。
执行后,将在当前目录下生成 libcrypto.lib
文件。
完整命令流程
cd /d D:\Qt_Project\AESencryptor\
"D:\Qt_Project\AESencryptor\pexports.exe" libcrypto-1_1-x64.dll > libcrypto.def
lib /def:libcrypto.def /machine:x64 /out:libcrypto.lib