2016-05-14 37 views
1

在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我可以编译器是缺少一些文件或有选择我可以操纵它来工作?

在哪个方向我必须寻找答案?

+0

您是否在'invertDisplay'的基类中提供了一个定义? – user657267

+0

是的。然而,你在这里看到的代码部分要大得多,所以可能会有更多的定义不被使用。但代码适用于覆盆子pi。他们使用相同的“交叉编译器”。可以有一些设置可以调整吗? – Plumbum7

回答