【发布时间】:2018-05-04 11:36:24
【问题描述】:
我有一个类似的声明
class ABC_EXPORT abc
{
....
public:
xyz foo1(const arg1 a, const arg3 b) const; //defined in cpp file
xyz foo2(const arg1 a, const arg2 b) const { return foo1(a, convert_to_arg3(b));}
};
这被构建到一个 DLL 库中,另一个项目调用 foo2。我收到链接器错误 LNK2019 : unresolved external symbol。但是,如果我从foo2 的定义中删除const,则链接已解决。有人可以解释一下这里发生了什么吗?我在 Windows 7 上使用 VS2012
【问题讨论】:
-
您是否尝试将定义移动到头文件并再次尝试?我认为不是标题的库只需要特殊处理
-
您肯定在链接一个旧版本的导入库,它是在您添加 const 之前创建的。请确保项目仍然正确构建,仔细检查 .lib 文件上的时间戳,始终避免手动复制文件。
-
您还可以检查库中的符号,解开名称,并确保它是您所期望的。
-
@HansPassant 我确实做了一个干净的构建
-
请发布完整的链接器错误消息和 DLL 调用者使用的头文件。我认为与方法签名有关。
标签: c++ class visual-studio-2012 dll