VS2015报错LNK2001 "public: virtual struct QMetaObject const...

2023-05-16

在VS2015中C++项目会出现报错,我的错误是以下三个外部命令
1.LNK2001 "public: virtual struct QMetaObject const * __cdecl UTMUI::metaObject(void)const " (?metaObject@UTMUI@@UEBAPEBUQMetaObject@@XZ)    
2.    LNK2001     "public: virtual void * __cdecl UTMUI::qt_metacast(char const *)" (?qt_metacast@UTMUI@@UEAAPEAXPEBD@Z)    
3.    LNK2001     "public: virtual int __cdecl UTMUI::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@UTMUI@@UEAAHW4Call@QMetaObject@@HPEAPEAX@Z)    

这个是说明报错的这个文件的.h文件里有Q_OBJECT,这个时候需要生成后缀为_moc.cpp结尾的文件。      VS2015中自动生成Qt的moc文件的方法
1.在你的这个.h文件的文件所在目录界面,按住Shift,鼠标右击在空白处,出现一个选框,选择 "在此处打开 Windows PowerShell "

2.打开QT的在C盘的C:\Qt\Qt5.9.5\5.9.5\msvc2015_64\bin(我的是在这里,下载时自动在这里),找到moc.exe,将moc.exe拖到Windows PowerShell里,就会发现moc.exe的地址已经放上去了。

3.将你的问题的文件,也就是Q_OBJECT的.h文件在其文件所在位置的界面上,将它拖到Windows PowerShell里面,就可以在Windows PowerShell里面看到跟着moc.exe后面的是这个.h的地址。

4.在.h文件的地址后面写上  -o (.h文件的名字不加后缀)_moc.cpp    ,按住enter就生成好了,你可以在.h文件的同级目录里看到。

如果没有别的错误就可以成功生成了。

给参考下我enter前的PS D:\1-Working\Plugin\TemplateSource> C:\Qt\Qt5.9.5\5.9.5\msvc2015_64\bin\moc.exe D:\1-Working\Plugin\\TemplateSource\stoc.h -o stoc_moc.cpp

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VS2015报错LNK2001 "public: virtual struct QMetaObject const... 的相关文章

  • C# 中的“公共无效”函数

    谁能告诉我为什么当我尝试声明和使用 public void 函数时它会给我错误 Expected class delegate enum interface or struct 我在开始时声明了它并正确设置了它 并且它不会调用我的主体 我已
  • 虚拟基类和初始化列表[重复]

    这个问题在这里已经有答案了 可能的重复 gcc c 虚拟继承问题 Hi all 我想知道编译器在使用虚拟基类的多重继承时如何处理不同的初始化值 考虑一下臭名昭著的 恐惧钻石 继承计划 Base D1 D2 Join 为了避免有两份副本Bas
  • 为什么需要 virtual 关键字?

    换句话说 为什么编译器不 知道 如果函数的定义在派生类中发生更改 并且指向该派生类动态分配的内存的指针调用更改后的函数 那么该函数特别应该被称为而不是基类的 在什么情况下 使用 virtual 关键字对程序员没有好处 virtual关键字告
  • f# 中受保护的虚拟方法

    F 不支持定义protected方法 这里解释一下why https stackoverflow com questions 2390515 why isnt there a protected access modifier in f F
  • 捕获 dll 异常后访问冲突

    我必须在运行时动态地将模块加载为 dll 因为它们事先并不知道 只是它们符合类接口 我注意到的是 在我捕获 dll 抛出的异常 在主线程的主程序中 后 会调用正确的析构函数 并销毁模块并卸载 dll 但随后作为 catch 块末尾的 当 V
  • 在子类中将非纯虚函数变成纯虚函数

    所以 我有这个多态层次结构 ClassA Is not abstract no pure virtual functions but a few virtual functions ClassB public ClassA Defines
  • 为什么“虚拟”对于派生类中的重写方法是可选的?

    当一个方法被声明为virtual在类中 会自动考虑其在派生类中的重写virtual同样 C 语言使此关键字virtual在这种情况下可选 class Base virtual void f class Derived public Base
  • 未使用的私有虚拟方法是否允许将来扩展而不破坏 ABI 兼容性?

    我正在开发一个共享库 假设我有以下类定义 class MyClass public public interface private virtual void foo1 int virtual void foo2 int bool virt
  • iOS6 中的 CoreMIDI/PGMidi 虚拟 midi 错误

    面临两个错误 此代码在 iOS 4 和 5 中有效 但更新到 6 后 它不起作用 我发现了以下内容 但不知道如何在代码中修复它 从 iOS 6 开始 应用程序需要在其 UIBackgroundModes 中拥有音频键才能使用 CoreMID
  • 如何隐藏虚拟键盘

    我不想显示虚拟键盘 我尝试了下面的方法 但没有任何区别 InputMethodManager imm InputMethodManager getSystemService Context INPUT METHOD SERVICE imm
  • Conda:创建虚拟环境

    我正在尝试创建一个虚拟环境 我已按照两者的步骤进行操作Conda https conda io docs user guide tasks manage environments html and Medium https medium c
  • 用函数指针调用基类定义的虚成员函数

    我想使用成员函数指针调用虚函数的基类实现 class Base public virtual void func cout lt lt base lt lt endl class Derived public Base public voi
  • 创建虚拟监视器(显示设备)

    我提出了一个问题here https stackoverflow com questions 11919175 java robot screenshot beyond visible但意识到我走错了方向 我需要创建一个虚拟监视器 实际上只
  • python 中的私有公共受保护访问说明符

    我们可以在Python中模拟私有和受保护的访问说明符吗 名称修改 eg var 10 可以模拟私有 但可以通过对象轻松地从外部访问 object className var 那么有没有一种方法可以模拟 或者 python 是否直接是我不知道
  • 如果 main 方法位于 java 文件的“非公共类”内部怎么办?

    我有一个包含多个类的java文件 其中一个类是公共的 如果 main 方法位于非公共类内部 我无法运行该 java 文件 这是为什么 并且也没有编译错误 如果是这样 我该如何使用该 main 方法 实际上 您可以在非公共类中执行 main
  • 如何创建一个所有字段都是公共的公共结构,而无需为每个字段重复“pub”?

    如何在 Rust 中定义一个公共结构 其中所有字段都是公共的 而不必重复pub每个字段前面的修饰符 A pub struct宏将是理想的 pub struct Foo a i32 b f64 这相当于 pub struct Foo pub
  • 如何在不使用鼠标的情况下执行虚拟鼠标单击C# [重复]

    这个问题在这里已经有答案了 我想在 Windows 应用程序中执行单击 而不使用真正的鼠标 这样我可以将其最小化 很像机器人的行为 我该怎么做 我认为你正在寻找的功能是PostMessage DllImport user32 dll Set
  • 为什么 Windows 为其系统地址空间保留 1Gb(或 2Gb)?

    众所周知 Windows 应用程序在 32 位系统上通常有 2Gb 的私有地址空间 使用 3Gb 开关可以将该空间扩展到 3Gb 操作系统自行保留剩余的 4Gb 我的问题是为什么 在内核模式下运行的代码 即设备驱动程序代码 有自己的地址空间
  • 为什么在内部类中使用公共方法?

    我们的一个项目中有很多代码如下所示 internal static class Extensions public static string AddFoo this string s if s null return Foo return
  • 为什么没有人接受 C# 中的公共字段?

    似乎每个 C 静态分析器在看到公共字段时都会抱怨 但为什么 当然 在某些情况下 公共 或内部 field就足够了 拥有一个拥有它的财产是没有意义的get and set 方法 如果我确定我不会重新定义该字段或添加该字段怎么办 副作用很糟糕

随机推荐