在VisualStudio中试图通过交叉编译的树莓派,我得到以下错误:未定义refence为“虚函数表的Adafruit_GFX”由于交叉编译树莓派
VisualGDB: Run "make CONFIG=Debug" in directory "/tmp/VisualGDB/c/Users/Revius/Desktop/usbtest/conversiecsc++/LinuxProject12/LinuxProject12" on [email protected] (SSH)
g++ -ggdb -ffunction-sections -O0 -DDEBUG -c LinuxProject12.cpp -o Debug/LinuxProject12.o -MD -MF Debug/LinuxProject12.dep
g++ -o Debug/LinuxProject12 -Wl,-gc-sections -L/home/pi/libssd1306/build/ArduiPi_OLED -Wl,--start-group Debug/LinuxProject12.o -Wl,--rpath='$ORIGIN' -Wl,--end-group Debug/LinuxProject12.o: In function `Adafruit_GFX::~Adafruit_GFX()':
C:\Users\Revius\AppData\Local\VisualGDB\RemoteSourceCache\raspberrypi\0003\include\Adafruit_GFX.h(35): error VGDB1000: undefined reference to `vtable for Adafruit_GFX'
关闭Adafruit_GFX.H的部分编译器在哪里指向是
"virtual ~Adafruit_GFX() {};"
在:
#ifndef _ADAFRUIT_GFX_H
#define _ADAFRUIT_GFX_H
#define swap(a, b) { int16_t t = a; a = b; b = t; }
//class Adafruit_GFX : public Print {
class Adafruit_GFX {
public:
//Adafruit_GFX();
// i have no idea why we have to formally call the constructor. kinda sux
void constructor(int16_t w, int16_t h);
virtual ~Adafruit_GFX() {};
// this must be defined by the subclass
virtual void drawPixel(int16_t x, int16_t y, uint16_t color) = 0;
virtual void invertDisplay(boolean i);
怪异的是,我用 “做”在树莓派和作品中,我可以开始,所以它的作品代码是好的?但不是由Visualstudio?
所以我的问题是: 由于我交叉compilling我可以编译器是缺少一些文件或有选择我可以操纵它来工作?
在哪个方向我必须寻找答案?
您是否在'invertDisplay'的基类中提供了一个定义? – user657267
是的。然而,你在这里看到的代码部分要大得多,所以可能会有更多的定义不被使用。但代码适用于覆盆子pi。他们使用相同的“交叉编译器”。可以有一些设置可以调整吗? – Plumbum7