【发布时间】:2023-03-08 21:52:01
【问题描述】:
我有一个包含各种项目的 Visual Studio 解决方案:静态库项目(创建 *.lib 文件)、动态库项目(创建 *.dll 文件)和一个 exe 项目(创建 *.exe 文件)
exe 项目使用(或者更好地说 - 取决于)静态和动态库。
我在配置属性->链接器->常规中添加了dll文件的路径,在配置属性->链接器->输入中添加了.lib文件的名称。
问题是当我尝试构建 exe 项目时,链接器出现同样的错误:
LNK2019 未解析的外部符号...在函数中引用...
每次使用 dll 函数都会出现此错误。
项目配置中缺少什么,所以我的链接器会满足吗?
编辑: - 要导出的所需函数示例:
extern "C" {
void foo1(int i);
void foo2(int i);
...
}
【问题讨论】:
-
"...动态库项目(创建 *.dll 文件)...":还应该创建 .lib 文件,这些文件是这些需要的导入/导出定义联系起来。
-
什么意思?我需要从同一个项目中创建 dll 和 lib?
-
没有默认的 Visual Studio DLL 项目会自动输出 *.DLL 和导入/导出 *.LIB。 DLL 包含代码,而 LIB 只是一个引用 DLL 的存根库。然后链接库以使用 DLL 中的函数。在运行时,LIB 中的存根代码会导致调用系统加载程序以加载 DLL 并修复入口点。
-
在 MSDN 上查找
__declspecimport和export使用条件#defines 用于导入导出和 Linux 差异。 -
或使用
.DEF文件来定义导出。
标签: c++ visual-studio dll linker-errors