peterus / ESP-FTP-Server-Lib

MIT License
25 stars 12 forks source link

Error compiling for ESP32 (Arduino) #21

Closed prosd closed 1 year ago

prosd commented 1 year ago

Hello,

Thank for your library! I've used it in previous projects and it works like a charm.

However, building for ESP (using Arduino framework) generates some warning and an error.

This is my compilation output:

Compiling .pio\build\lolin_d32_proJAN\lib152\WiFi\WiFi.cpp.o
Compiling .pio\build\lolin_d32_proJAN\lib152\WiFi\WiFiAP.cpp.o
Compiling .pio\build\lolin_d32_proJAN\lib152\WiFi\WiFiClient.cpp.o
Compiling .pio\build\lolin_d32_proJAN\lib152\WiFi\WiFiGeneric.cpp.o
Compiling .pio\build\lolin_d32_proJAN\lib152\WiFi\WiFiMulti.cpp.o
Compiling .pio\build\lolin_d32_proJAN\lib152\WiFi\WiFiSTA.cpp.o
Compiling .pio\build\lolin_d32_proJAN\lib152\WiFi\WiFiScan.cpp.o
In file included from .pio/libdeps/lolin_d32_proJAN/ESP-FTP-Server-Lib/src/FTPCommand.h:7,
                 from .pio/libdeps/lolin_d32_proJAN/ESP-FTP-Server-Lib/src/FTPConnection.h:7,
                 from .pio/libdeps/lolin_d32_proJAN/ESP-FTP-Server-Lib/src/ESP-FTP-Server-Lib.h:8,
                 from src/main.cpp:2:
.pio/libdeps/lolin_d32_proJAN/ESP-FTP-Server-Lib/src/FTPFilesystem.h:57:24: warning: extra tokens at end of #ifdef directive
 #ifdef ESP_IDF_VERSION && ESP_IDF_VERSION_VAL
                        ^~
.pio/libdeps/lolin_d32_proJAN/ESP-FTP-Server-Lib/src/FTPFilesystem.h: In member function 'virtual fs::FileImplPtr FTPFileImpl::openNextFile(const char*)':
.pio/libdeps/lolin_d32_proJAN/ESP-FTP-Server-Lib/src/FTPFilesystem.h:84:46: error: invalid new-expression of abstract class type 'FTPFileImpl'
   return fs::FileImplPtr(new FTPFileImpl(next));
                                              ^
.pio/libdeps/lolin_d32_proJAN/ESP-FTP-Server-Lib/src/FTPFilesystem.h:40:7: note:   because the following virtual functions are pure within 'FTPFileImpl':
 class FTPFileImpl : public fs::FileImpl
       ^~~~~~~~~~~
In file included from .pio/libdeps/lolin_d32_proJAN/ESP-FTP-Server-Lib/src/FTPFilesystem.h:6,
                 from .pio/libdeps/lolin_d32_proJAN/ESP-FTP-Server-Lib/src/FTPCommand.h:7,
                 from .pio/libdeps/lolin_d32_proJAN/ESP-FTP-Server-Lib/src/FTPConnection.h:7,
                 from .pio/libdeps/lolin_d32_proJAN/ESP-FTP-Server-Lib/src/ESP-FTP-Server-Lib.h:8,
                 from src/main.cpp:2:
C:/Users/user/.platformio/packages/framework-arduinoespressif32/libraries/FS/src/FSImpl.h:39:18: note:  'virtual bool fs::FileImpl::setBufferSize(size_t)'
     virtual bool setBufferSize(size_t size) = 0;
                  ^~~~~~~~~~~~~
*** [.pio\build\lolin_d32_proJAN\src\main.cpp.o] Error 1
======================================================================================== [FAILED] Took 9.45 seconds =======================================================================================

Hope you can help me out here

Thanks!

t2rtech commented 1 year ago

you need to make these modifications:

https://stackoverflow.com/questions/12615904/g-because-the-following-virtual-functions-are-pure-with-abstract-base-class

The simple way, add these lines in FTPFilesystem.h inside the definition of class FTPFileImpl:

bool setBufferSize(size_t size) override { return false; }; const char* path() const override { return NULL; }; boolean seekDir(long position) override { return false; }; String getNextFileName(void) override { return String(""); };