Win32 控制台应用程序 -> .dll + 空项目选项。-6ren">
gpt4 book ai didi

C++: "unresolved external symbol"在 .lib 成功构建后在 VS2010 中创建 .dll

转载 作者:搜寻专家 更新时间:2023-10-31 01:54:18 26 4
gpt4 key购买 nike

这是我第一次尝试创建一个 .dll,它将用作第 3 方应用程序的插件。

我在 VS210 中创建了一个 .dll 项目...新建项目 -> Win32 控制台应用程序 -> .dll + 空项目选项。

然后我在我想使用的文件中添加了所需代码的各种包含/依赖库。此外,将链接器设置为包含输出 .lib

配置属性 -> 链接器 -> 高级 -> 导入库 - $(OutDir)$(TargetName).lib

虽然 .lib 已成功编译,但一旦 VS 尝试构建 .dll,我就会收到大量与所有已定义函数名称相关的“未解析的外部符号”错误。

ClCompile:
SOMPlugin.cpp
Link:
Creating library F:\Data\My Documents\Visual Studio 2010\Projects\Plugin-SOM - Copy\Release\Plugin-SOM.lib and object F:\Data\My Documents\Visual Studio 2010\Projects\Plugin-SOM - Copy\Release\Plugin-SOM.exp
SOMPlugin.obj : error LNK2001: unresolved external symbol "public: virtual struct QMetaObject const * __thiscall SOMPlugin::metaObject(void)const " (?metaObject@SOMPlugin@@UBEPBUQMetaObject@@XZ)
SOMPlugin.obj : error LNK2001: unresolved external symbol "public: virtual void * __thiscall SOMPlugin::qt_metacast(char const *)" (?qt_metacast@SOMPlugin@@UAEPAXPBD@Z)
SOMPlugin.obj : error LNK2001: unresolved external symbol "public: virtual int __thiscall SOMPlugin::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@SOMPlugin@@UAEHW4Call@QMetaObject@@HPAPAX@Z)
SOMPlugin.obj : error LNK2001: unresolved external symbol "protected: virtual void __thiscall SOMPlugin::updateView(void)" (?updateView@SOMPlugin@@MAEXXZ)
SOMPlugin.obj : error LNK2001: unresolved external symbol "protected: virtual void __thiscall SOMPlugin::updatedObject(int,class UpdateType const &)" (?updatedObject@SOMPlugin@@MAEXHABVUpdateType@@@Z)
SOMPlugin.obj : error LNK2001: unresolved external symbol "protected: virtual void __thiscall SOMPlugin::addToolbox(class QString,class QWidget *)" (?addToolbox@SOMPlugin@@MAEXVQString@@PAVQWidget@@@Z)
SOMPlugin.obj : error LNK2001: unresolved external symbol "protected: virtual void __thiscall SOMPlugin::log(class QString)" (?log@SOMPlugin@@MAEXVQString@@@Z)
SOMPlugin.obj : error LNK2001: unresolved external symbol "protected: virtual void __thiscall SOMPlugin::log(enum Logtype,class QString)" (?log@SOMPlugin@@MAEXW4Logtype@@VQString@@@Z)
SOMPlugin.obj : error LNK2019: unresolved external symbol "public: virtual __thiscall SOMPlugin::~SOMPlugin(void)" (??1SOMPlugin@@UAE@XZ) referenced in function "public: virtual void * __thiscall SOMPlugin::`scalar deleting destructor'(unsigned int)" (??_GSOMPlugin@@UAEPAXI@Z)
SOMPlugin.obj : error LNK2001: unresolved external symbol "public: static struct QMetaObject const SOMPlugin::staticMetaObject" (?staticMetaObject@SOMPlugin@@2UQMetaObject@@B)
F:\Data\My Documents\Visual Studio 2010\Projects\Plugin-SOM\Release\Plugin-SOM.dll : fatal error LNK1120: 9 unresolved externals

如有任何帮助,我们将不胜感激。

最佳答案

即使出现链接器错误,也会生成 lib。让我们看一个:

SOMPlugin.obj : error LNK2001: unresolved external symbol "public: virtual struct QMetaObject const * __thiscall SOMPlugin::metaObject(void)const " (?metaObject@SOMPlugin@@UBEPBUQMetaObject@@XZ)

这告诉您您还没有实现方法 SOMPlugin::metaObject(void)const。你有吗?

其余类似,除了

SOMPlugin.obj : error LNK2001: unresolved external symbol "public: static struct QMetaObject const SOMPlugin::staticMetaObject" (?staticMetaObject@SOMPlugin@@2UQMetaObject@@B)

在这种情况下,您需要在类定义之外的实现文件中定义静态成员。

关于C++: "unresolved external symbol"在 .lib 成功构建后在 VS2010 中创建 .dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9873771/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com