【发布时间】:2016-07-09 07:42:41
【问题描述】:
我对 Visual Studio 并不陌生,我知道对此有很多问题。但我真的无法弄清楚这一点。这是错误:
1>moc_displaycounter.obj : error LNK2001: unresolved external symbol "public: static struct QMetaObject const Counter::staticMetaObject" (?staticMetaObject@Counter@@2UQMetaObject@@B)
1>moc_displaymanometer.obj : error LNK2001: unresolved external symbol "public: static struct QMetaObject const ManoMeter::staticMetaObject" (?staticMetaObject@ManoMeter@@2UQMetaObject@@B)
1>moc_displaysvgmeter.obj : error LNK2001: unresolved external symbol "public: static struct QMetaObject const SVGMeter::staticMetaObject" (?staticMetaObject@SVGMeter@@2UQMetaObject@@B)
所以我在导入库上做了一个 dumpbin /EXPORTS,它返回了这个:
Microsoft (R) COFF/PE Dumper Version 14.00.24210.0
Copyright (C) Microsoft Corporation. All rights reserved.
Dump of file analogwidgets.lib
File Type: LIBRARY
Exports
ordinal name
??0AbstractMeter@@QEAA@PEAVQWidget@@@Z (public: __cdecl AbstractMeter::AbstractMeter(class QWidget *))
?staticMetaObject@Counter@@2UQMetaObject@@B (public: static struct QMetaObject const Counter::staticMetaObject)
?staticMetaObject@Item@@2UQMetaObject@@B (public: static struct QMetaObject const Item::staticMetaObject)
?staticMetaObject@Led@@2UQMetaObject@@B (public: static struct QMetaObject const Led::staticMetaObject)
?staticMetaObject@ManoMeter@@2UQMetaObject@@B (public: static struct QMetaObject const ManoMeter::staticMetaObject)
?staticMetaObject@PotentioMeter@@2UQMetaObject@@B (public: static struct QMetaObject const PotentioMeter::staticMetaObject)
?staticMetaObject@SVGMeter@@2UQMetaObject@@B (public: static struct QMetaObject const SVGMeter::staticMetaObject)
我检查了导入库上的确切签名。作为一个很好的衡量标准,我使用 depends 来检查这些符号是否在 DLL 中(是的,我知道它在链接过程中不起作用,只是为了确保导入库不是坏了),但它仍然不会链接。尝试调试和发布 x64 版本均未成功。以前用其他版本的VS都没有问题。
对我接下来应该做什么有什么想法吗?
【问题讨论】:
-
您好像忘记定义一些静态类变量了。
-
当您声明某些东西但忘记定义它时,会发生未解决的外部符号错误。可以是成员函数或静态变量。
标签: c++ visual-studio visual-studio-2015 linker