VS2019编译ARM64 dll工程只生成dll未生成lib导出库
一,问题现象
在使用VS2019动态链接库工程编译ARM64的dll时,只生成dll文件,没有生成导出库lib:
使用工程模板:
生成文件只有dll,没有lib:
二,问题原因
未定义导出函数:如果动态链接库中没有导出的函数或符号,Visual Studio可能不会生成导入库。确保在动态链接库中正确地声明了需要导出的函数或符号,并使用__declspec(dllexport)进行标记。
三,解决方法
3.1,在头文件中添加函数导出符号
#ifndef CALCULATOR_H
#define CALCULATOR_H
#ifdef __cplusplus
extern "C" {
#endif
#define CALCULATOR_EXPORTS
#ifdef CALCULATOR_EXPORTS
#define CALCULATOR_API __declspec(dllexport)
#else
#define CALCULATOR_API __declspec(dllimport)
#endif
CALCULATOR_API int add(int a, int b);
CALCULATOR_API int subtract(int a, int b);
CALCULATOR_API int multiply(int a, int b);
CALCULATOR_API float divide(int a, int b);
#ifdef __cplusplus
}
#endif
#endif /* CALCULATOR_H */#pragma once
3.2,检查头文件包含,确认.h文件被.c文件包含,能够被正确编译到库中
3.3,重新编译,确认已经生成导出lib库
3.4,使用dumpbin查看库的类型和导出符号
查看库类型:
//查看库的类型
dumpbin /headers xxx.dll
查看导出符号:
//查看导出符号
dumpbin /exports xxx.dll
至此,ARM64的dll库编译完成。欢迎一起讨论交流~