C++:在 .lib 成功构建后在 VS2010 中创建.dll时"unresolved external symbol"
C++: "unresolved external symbol" when creating .dll in VS2010 after the .lib sucecssfully builds
这是我第一次尝试创建.dll,它将用作第三方应用程序的插件。
我在VS210中创建了一个.dll项目…新建项目->Win32控制台应用程序->.dll+空项目选项。
然后,我在想要使用的文件中添加了所需的代码,并包含了各种include/dependence库。此外,将链接器设置为包括输出.lib
配置属性->链接器->高级->导入库-$(OutDir)$(TargetName).lib
当.lib被成功编译时,只要VS试图构建.dll,我就会收到与所有定义的函数名相关的"未解析的外部符号"错误。
ClCompile:
SOMPlugin.cpp
Link:
Creating library F:DataMy DocumentsVisual Studio 2010ProjectsPlugin-SOM - CopyReleasePlugin-SOM.lib and object F:DataMy DocumentsVisual Studio 2010ProjectsPlugin-SOM - CopyReleasePlugin-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:DataMy DocumentsVisual Studio 2010ProjectsPlugin-SOMReleasePlugin-SOM.dll : fatal error LNK1120: 9 unresolved externals
任何帮助都将不胜感激。
即使出现链接器错误,也会生成lib
。让我们来看一个:
SOMPlugin.obj:错误LNK2001:未解析的外部符号"public:虚拟结构QMetaObject常量*__thiscallSOMPlugin::metaObject(void)const"(?metaObject@SOMPlugin@@UBEPBUQMetaObject@@XZ)
这说明您尚未实现方法SOMPlugin::metaObject(void)const
。是吗?
除了之外,其余的都是类似的
SOMPlugin.obj:错误LNK2001:未解析的外部符号"public:static struct QMetaObject const SOMPlugin::staticMetaObject"(?staticMetaObject@SOMPlugin@@2UQMetaObject@@B)
在这种情况下,您需要在类定义之外的实现文件中为静态成员定义。
相关文章:
- 挂起和取消挂起一个文件DLL
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 导入库可以跨dll版本工作吗
- 从C++dll访问C#中的一行主要参数
- 链接到自行创建的dll失败
- 为什么使用 P/Invoke 调用 dll 时,某些计算机中的 LoadLibrary 失败?
- 在调用FreeLibrary后,释放动态链接到具有相同版本的CRT堆的DLL的内存
- 如何指定我希望我的LIB链接到的DLL文件?-Visual Studio 2019
- 如何将图像传输到c++(dll)中的缓冲区,然后在c#的缓冲区中读/写
- C++:将外部库链接到dll库
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 不同的Visual Studio版本中缺少.dll
- 从DLL中删除类的实例
- 如何包装第三方DLL在R中使用
- 使用c#访问c++dll中带有char*参数的函数时发生AccessViolationException
- 系统.将数组移交给c#中动态加载的c++DLL时发生AccessViolationException
- 为什么 VS C++链接器返回具有混合 DLL 转发的"LNK2001: unresolved external symbol"?
- DLL 注入编译 "unresolved external symbol" Visual Studio C++
- C++:在 .lib 成功构建后在 VS2010 中创建.dll时"unresolved external symbol"
- c#/wpf OpenMP inside external dll