Qt 編譯出錯:undefined reference to vtable XXX
在Qt編譯的過程中,程序會出現 error: undefined reference to `vtable for 類名'的問題,對於不經常使用QT的人來說甚是頭疼,其實這類問題發生的主要原因在於,一般我們定義了一個類以後,如果他是繼承了其他類的話
就比如說我們用MyBarView繼承自QGraphicsView,由於QGraphicsView中存在虛擬函式,而對於繼承關係來說,子類和父類使用同一個虛擬函式表,即我們使用初始化MyBarView類時候,會去檢視父類的虛擬函式表(其實就是自己的),虛擬函式表實際上就是函式地址表,這個表內的地址以一定函式名為規則進行命名,當然這就是和編譯器編譯原理有關係了。
所以,當我們定義好這個類的時候,他的虛擬函式表也就固定了,那麼又為什麼會出現上面undefined reference to vtable XXX問題呢,實際上有很多原因,比如這個時候對MyBarView這個類重新命名,例如定義為QMyBarView時就會出現上面de 問題,主要是因為虛擬函式表還保留了上次的函式地址,所以這個時候需要重新構建,執行qmake就好了。你就會發現編譯通過了
相關推薦
Qt 編譯出錯:undefined reference to vtable XXX
在Qt編譯的過程中,程序會出現 error: undefined reference to `vtable for 類名'的問題,對於不經常使用QT的人來說甚是頭疼,其實這類問題發生的主要原因在於,一般我們定義了一個類以後,如果他是繼承了其他類的話 就比如說我們
gcc編譯執行緒程式需帶-lpthread選項(否則出錯:undefined reference to `pthread_create')
程式中兩處使用了pthread_create函式,包含了標頭檔案#include <pthread.h>。 gcc xxx.c -o xxx 編譯時出現以下錯誤: 分析: 用gcc編譯使用了POSIX thread的程式時通常需要加額外的選項,以連結到庫。 此
ubuntu 下 make 編譯錯誤:undefined reference to cv::line
在編譯一個專案時候出現 “undefined reference to cv::line” 的錯誤,是在連結其中一個靜態庫的時候出現的錯誤,錯誤如下: /home/build/lib/libapriltags.a(TagDetection.cc.o): In function `AprilTag
編譯錯誤:undefined reference to `__umoddi3'的處理
用gcc 4.3編譯kernel 2.6.22,結果出現:undefined reference to `__umoddi3'這樣的錯誤。查google是gcc 4.3太新的問題,在更新的kernel應該沒有這個問題,解決的辦法如下:cd kernelvi Makefile找
codeblocks:編譯問題 undefined reference to vtable for...
一個嚴重的問題,在codeblocks用C++程式設計中出現 undefined reference to vtable for…的問題,昨天就遇到了,今天通過查資料才解決,主要涉及到類中的虛擬函式實現的問題。 相信大家都有習慣,程式設計時,寫幾個函式就編譯一下,否則全寫好再編譯的話會,會
Qt 出現“undefined reference to `vtable for”
在QT中定義了一個執行緒類,繼承自QThread, 在類中未加 Q_OBJECT 時編譯正常,加入後報錯如下: undefined reference to `vtable for myThread' 在串列埠下,手動make,無錯誤。 百度後得知: 一:預編譯器開啟巨集Q_OBJECT,宣告若干個由
Qt工作筆記-undefined reference to `vtable for MyObject'及對moc檔案的進一步理解
原始碼如下: main.cpp #include <QApplication> #include <QObject> #include <QTextCodec> class MyObject:public QObject{ Q
QT學習筆記:關於QT下配置OpenCV3.4.0後出現 error: undefined reference to 'cv::xxx'的問題及解決方案
按照網上的辦法,在QT中pro檔案末尾新增以下程式碼來引入OpenCV的庫和標頭檔案: INCLUDEPATH += D:\OpenCV3.4\opencv\build_mingw\install\x64\mingw\include LIBS += D:\Ope
<QT>Qt 出現“undefined reference to `vtable for”原因總結
由於Qt本身實現的機制所限,我們在使用Qt製作某些軟體程式的時候,會遇到各種各樣這樣那樣的問題,而且很多是很難,或者根本找不到原因的,即使解決了問題,如果有人問你為什麼,你只能回答--不知道。 今天我在這裡列舉的問題也是再編寫Qt程式時,
Qt undefined reference to `vtable for’”問題的原因及解決方法
引用https://blog.csdn.net/morixinguan/article/details/81327075 QT中,類要支援訊號與槽機制,需要繼承自QObject並在標頭檔案開頭新增Q_OBJECT巨集. 如果使用QtCreator建立類時,沒有選擇繼承自QObject
linux下生產者與消費者問題程式碼,以及編譯c程式碼時error:undefined reference to sem_wait 解決方法之一
//本文的詳細講解內容請大家下載word文件:http://download.csdn.net/detail/chenqiai0/4611801 #include <stdio.h> #include <pthread.h>//執行緒 #includ
Qt中出現qt : undefined reference to `vtable forXXX解決辦法
我們在Qt中要使用訊號和槽的時候必須要新增Q_OBJECT巨集,否則會報錯。但是有時候我們添加了Q_OBJECT的時候,我們會發現同樣會報錯,報錯如下所示: undefined reference to 'vtable for ***(類) 面對這個報錯
Qt 出現“undefined reference to `vtable for”原因總結;
由於Qt本身實現的機制所限,我們在使用Qt製作某些軟體程式的時候,會遇到各種各樣這樣那樣的問題,而且很多是很難,或者根本找不到原因的,即使解決了問題,如果有人問你為什麼,你只能回答--不知道;今天我在這裡列舉的問題也是再編寫Qt程式時,總是遇到的問題,問題普遍,而答案卻不唯一
caffe日常坑系列之:undefined reference to symbol '_ZN2cv6String10deallocateEv'
iss ren and tor ssi symbols str mis locate 在使用caffe庫編譯C++時出現的 解決如下: /usr/bin/ld: /tmp/ccA5JGRP.o: undefined reference to symbol ‘_ZN2cv
minigui:解決gvfb編譯報錯undefined reference to symbol 'XkbGetIndicatorState'
minigui在linux PC平臺建立開發環境時,需要Virtual Frame Buffer 支援(gvfb,qvfb),minigui官網提供了這兩個程式的原始碼,需要自己下載編譯並安裝到自己的PC上。 我用的是gvfb,minigui下載地址:http://www.minig
「caffe編譯bug」 undefined reference to `boost::match_results<__gnu_cxx::__normal_iterator<char const*, std::__cxx11
CXX/LD -o .build_release/tools/test_net.binCXX/LD -o .build_release/tools/convert_annoset.binCXX/LD -o .build_release/tools/device_query.binCXX/LD -o .buil
Clion lua 編譯報錯: undefined reference to `lual_newstate' 在win10上面編譯lua5.3.5以及解決方法
在CmakeLists.txt裡面新增: ``` include_directories("D:\\lua\\lua-5.3.5\\lua-5.3.5\\dist\\include") link_directories("D:\\lua\\lua-5.3.5\\lua-5.3.5
opencv error: undefined reference to `
undefined reference to `vtable for YAML::BadConversion' 報錯的解決方法
Bug
在編譯用到yaml程式的時候,遇到如下報錯:
/home/liuhang/Documents/Momenta/catkin_ws/devel/lib/libloam.so: undefined reference to `vtable for Y
Windows編譯OpenCV4Android解決undefined reference to std錯誤
OpenCV4Android支援三種使用方式 1.Java層呼叫 2.NDK呼叫動態庫(方便,但是會包含整個.so庫) 3.NDK呼叫靜態庫(靈活,比如沒有用到機器學習模組,libopencv_ml.a裡的程式碼是不會打包到動態庫裡的) 通過連結靜態庫的方式使用