arnefmeyer / RPiCameraPlugin

A plugin for the open-ephys plugin-GUI to control a Raspberry Pi camera
GNU General Public License v3.0
6 stars 13 forks source link

Problem creating plugin "PluginInfo.h: No such file or directory" #10

Open ghost opened 3 years ago

ghost commented 3 years ago

Hello,

I'm having a problem with the install.

I have followed all the steps on the git up to building the plugin in using cmake. after running:

sudo cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release ..

i went to run "make" still within the build directory and i got the following error:

usr/local/bin/open-ephys-gui/plugins/RPiCamera/Source/OpenEphysLib.cpp:24:10: fatal error: PluginInfo.h: No such file or directory 24 | #include | ^~~~~~ compilation terminated. make[2]: [CMakeFiles/RPiCamera.dir/build.make:63: CMakeFiles/RPiCamera.dir/Source/OpenEphysLib.cpp.o] Error 1 make[1]: [CMakeFiles/Makefile2:76: CMakeFiles/RPiCamera.dir/all] Error 2 make: *** [Makefile:130: all] Error 2

I know i'm probably doing something dumb but i cant seem to fix the problem.

arnefmeyer commented 3 years ago

You might need to define the location of the plugin-GUI directory (which contains the header file). I added an example to the building instructions in the README file.

ghost commented 3 years ago

Thank you for getting back to me. I wont have time to get to this today but I will either post again or close ticket when I do. Thank you.

ghost commented 3 years ago

I am still having the same issue. Screenshot from 2021-03-12 17-50-50

my open ephys is installed here I think: /usr/local/bin/open-ephys-gui

arnefmeyer commented 3 years ago

I don't think the deb install contains the header files. Try to install the plugin-GUI from source.

ghost commented 3 years ago

I have attempted to install open-ephys from source but that doesnt seem to work either. I have installed all the dependencies(ZeroMQ library, HDF5 library, ran the script in plugin-gui). but i get and error when i go to build the the plugin-gui. the cmake works fine but it errors out when I run make. I know this is not an issue with your plugin but rather my struggle to install from source but I have included the error below just in case its something simply im doing wrong. if not if you could point me in the direction of how to solve such and error it would be greatly appreciated,

Error:

pjmxeon@PJMXeon:~/Desktop/plugin-GUI-master/Build$ make Scanning dependencies of target open-ephys [ 1%] Building CXX object CMakeFiles/open-ephys.dir/JuceLibraryCode/BinaryData.cpp.o [ 1%] Building CXX object CMakeFiles/open-ephys.dir/JuceLibraryCode/juce_audio_basics.cpp.o [ 2%] Building CXX object CMakeFiles/open-ephys.dir/JuceLibraryCode/juce_audio_devices.cpp.o [ 2%] Building CXX object CMakeFiles/open-ephys.dir/JuceLibraryCode/juce_audio_formats.cpp.o [ 3%] Building CXX object CMakeFiles/open-ephys.dir/JuceLibraryCode/juce_audio_processors.cpp.o In file included from /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_graphics/juce_graphics.h:109, from /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_gui_basics/juce_gui_basics.h:55, from /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_audio_processors/juce_audio_processors.h:54, from /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_audio_processors/juce_audio_processors.cpp:36, from /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/juce_audio_processors.cpp:9: /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_graphics/colour/juce_PixelFormats.h: In member function ‘juce::uint8& juce::PixelARGB::getAlpha()’: /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_graphics/colour/juce_PixelFormats.h:113:77: error: cannot bind packed field ‘((juce::PixelARGB*)this)->juce::PixelARGB::.juce::PixelARGB::::comps[3]’ to ‘juce::uint8&’ {aka ‘unsigned char&’} 113 | e uint8& getAlpha() noexcept { return comps [indexA]; } | ~~~~~^

/home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_graphics/colour/juce_PixelFormats.h: In member function ‘juce::uint8& juce::PixelARGB::getRed()’: /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_graphics/colour/juce_PixelFormats.h:114:77: error: cannot bind packed field ‘((juce::PixelARGB*)this)->juce::PixelARGB::.juce::PixelARGB::::comps[2]’ to ‘juce::uint8&’ {aka ‘unsigned char&’} 114 | e uint8& getRed() noexcept { return comps [indexR]; } | ~~~~~^

/home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_graphics/colour/juce_PixelFormats.h: In member function ‘juce::uint8& juce::PixelARGB::getGreen()’: /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_graphics/colour/juce_PixelFormats.h:115:77: error: cannot bind packed field ‘((juce::PixelARGB*)this)->juce::PixelARGB::.juce::PixelARGB::::comps[1]’ to ‘juce::uint8&’ {aka ‘unsigned char&’} 115 | e uint8& getGreen() noexcept { return comps [indexG]; } | ~~~~~^

/home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_graphics/colour/juce_PixelFormats.h: In member function ‘juce::uint8& juce::PixelARGB::getBlue()’: /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_graphics/colour/juce_PixelFormats.h:116:77: error: cannot bind packed field ‘((juce::PixelARGB*)this)->juce::PixelARGB::.juce::PixelARGB::::comps[0]’ to ‘juce::uint8&’ {aka ‘unsigned char&’} 116 | e uint8& getBlue() noexcept { return comps [indexB]; } | ~~~~~^

In file included from /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_graphics/juce_graphics.h:131, from /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_gui_basics/juce_gui_basics.h:55, from /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_audio_processors/juce_audio_processors.h:54, from /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_audio_processors/juce_audio_processors.cpp:36, from /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/juce_audio_processors.cpp:9: /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_graphics/native/juce_RenderingHelpers.h: In instantiation of ‘void juce::RenderingHelpers::EdgeTableFillers::SolidColour<PixelType, replaceExisting>::replaceLine(juce::PixelRGB, juce::PixelARGB, int) const [with PixelType = juce::PixelRGB; bool replaceExisting = true]’: /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_graphics/native/juce_RenderingHelpers.h:636:17: required from ‘void juce::RenderingHelpers::EdgeTableFillers::SolidColour<PixelType, replaceExisting>::handleEdgeTableLineFull(int, int) const [with PixelType = juce::PixelRGB; bool replaceExisting = true]’ /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_graphics/native/juce_RenderingHelpers.h:1889:29: required from ‘void juce::RenderingHelpers::ClipRegions::RectangleListRegion::SubRectangleIterator::iterate(Renderer&) const [with Renderer = juce::RenderingHelpers::EdgeTableFillers::SolidColour<juce::PixelRGB, true>; SavedStateType = juce::RenderingHelpers::SoftwareRendererSavedState]’ /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_graphics/native/juce_RenderingHelpers.h:1513:13: required from ‘void juce::RenderingHelpers::EdgeTableFillers::renderSolidFill(Iterator&, const juce::Image::BitmapData&, juce::PixelARGB, bool, DestPixelType) [with Iterator = juce::RenderingHelpers::ClipRegions::RectangleListRegion::SubRectangleIterator; DestPixelType = juce::PixelRGB]’ /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_graphics/native/juce_RenderingHelpers.h:2555:67: required from ‘void juce::RenderingHelpers::SoftwareRendererSavedState::fillWithSolidColour(IteratorType&, juce::PixelARGB, bool) const [with IteratorType = juce::RenderingHelpers::ClipRegions::RectangleListRegion::SubRectangleIterator]’ /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_graphics/native/juce_RenderingHelpers.h:1814:13: required from ‘void juce::RenderingHelpers::ClipRegions::RectangleListRegion::fillRectWithColour(SavedStateType&, const juce::Rectangle&, juce::PixelARGB, bool) const [with SavedStateType = juce::RenderingHelpers::SoftwareRendererSavedState]’ /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_graphics/native/juce_RenderingHelpers.h:1811:14: required from here /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_graphics/native/juce_RenderingHelpers.h:681:34: warning: converting a packed ‘juce::PixelRGB’ pointer (alignment 1) to a ‘int’ pointer (alignment 4) may result in an unaligned pointer value [-Waddress-of-packed-member] 681 | int d = reinterpret_cast<int> (dest); | ^ In file included from /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_graphics/juce_graphics.h:109, from /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_gui_basics/juce_gui_basics.h:55, from /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_audio_processors/juce_audio_processors.h:54, from /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_audio_processors/juce_audio_processors.cpp:36, from /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/juce_audio_processors.cpp:9: /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_graphics/colour/juce_PixelFormats.h:361:17: note: defined here 361 | class JUCE_API PixelRGB | ^~~~ In file included from /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_graphics/juce_graphics.h:131, from /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_gui_basics/juce_gui_basics.h:55, from /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_audio_processors/juce_audio_processors.h:54, from /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_audio_processors/juce_audio_processors.cpp:36, from /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/juce_audio_processors.cpp:9: /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_graphics/native/juce_RenderingHelpers.h: In instantiation of ‘void juce::RenderingHelpers::EdgeTableFillers::SolidColour<PixelType, replaceExisting>::replaceLine(juce::PixelRGB, juce::PixelARGB, int) const [with PixelType = juce::PixelRGB; bool replaceExisting = false]’: /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_graphics/native/juce_RenderingHelpers.h:636:17: required from ‘void juce::RenderingHelpers::EdgeTableFillers::SolidColour<PixelType, replaceExisting>::handleEdgeTableLineFull(int, int) const [with PixelType = juce::PixelRGB; bool replaceExisting = false]’ /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_graphics/native/juce_RenderingHelpers.h:1889:29: required from ‘void juce::RenderingHelpers::ClipRegions::RectangleListRegion::SubRectangleIterator::iterate(Renderer&) const [with Renderer = juce::RenderingHelpers::EdgeTableFillers::SolidColour<juce::PixelRGB, false>; SavedStateType = juce::RenderingHelpers::SoftwareRendererSavedState]’ /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_graphics/native/juce_RenderingHelpers.h:1518:13: required from ‘void juce::RenderingHelpers::EdgeTableFillers::renderSolidFill(Iterator&, const juce::Image::BitmapData&, juce::PixelARGB, bool, DestPixelType) [with Iterator = juce::RenderingHelpers::ClipRegions::RectangleListRegion::SubRectangleIterator; DestPixelType = juce::PixelRGB]’ /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_graphics/native/juce_RenderingHelpers.h:2555:67: required from ‘void juce::RenderingHelpers::SoftwareRendererSavedState::fillWithSolidColour(IteratorType&, juce::PixelARGB, bool) const [with IteratorType = juce::RenderingHelpers::ClipRegions::RectangleListRegion::SubRectangleIterator]’ /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_graphics/native/juce_RenderingHelpers.h:1814:13: required from ‘void juce::RenderingHelpers::ClipRegions::RectangleListRegion::fillRectWithColour(SavedStateType&, const juce::Rectangle&, juce::PixelARGB, bool) const [with SavedStateType = juce::RenderingHelpers::SoftwareRendererSavedState]’ /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_graphics/native/juce_RenderingHelpers.h:1811:14: required from here /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_graphics/native/juce_RenderingHelpers.h:681:34: warning: converting a packed ‘juce::PixelRGB’ pointer (alignment 1) to a ‘int’ pointer (alignment 4) may result in an unaligned pointer value [-Waddress-of-packed-member] 681 | int d = reinterpret_cast<int> (dest); | ^ In file included from /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_graphics/juce_graphics.h:109, from /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_gui_basics/juce_gui_basics.h:55, from /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_audio_processors/juce_audio_processors.h:54, from /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_audio_processors/juce_audio_processors.cpp:36, from /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/juce_audio_processors.cpp:9: /home/pjmxeon/Desktop/plugin-GUI-master/JuceLibraryCode/modules/juce_graphics/colour/juce_PixelFormats.h:361:17: note: defined here 361 | class JUCE_API PixelRGB | ^~~~ make[2]: [CMakeFiles/open-ephys.dir/build.make:115: CMakeFiles/open-ephys.dir/JuceLibraryCode/juce_audio_processors.cpp.o] Error 1 make[1]: [CMakeFiles/Makefile2:1227: CMakeFiles/open-ephys.dir/all] Error 2 make: *** [Makefile:84: all] Error 2

arnefmeyer commented 3 years ago

Looks like the issue with JUCE and gcc/g++-9 described in the readme in the rpicamera repo (2nd command). Try adding -D CMAKE_C_COMPILER=gcc-8 -D CMAKE_CXX_COMPILER=g++-8 to the cmake command (and make sure to remove the stuff that cmake produced before calling it again). gcc-8 and g++-8 can be installed via apt-get install gcc-8 g++-8.

ghost commented 3 years ago

That seems to have fix the make issue I was getting. However now I am getting yet another bug(i really cant seem to catch a break with this install). here is the output when i try to run the complied binary. I thought it was a problem with zmq but i went to check on it and it seems to be in order. I have also included 2 ss about the zmq on my computer as it might be whats causing the issue. Screenshot from 2021-03-16 17-22-41 Screenshot from 2021-03-15 16-53-53

output:

pjmxeon@PJMXeon:~/Desktop/plugin-GUI-master/Build/Debug$ ./open-ephys JUCE v4.2.1

Created processor graph.

Got audio device. Audio device name: Playback/recording through the PulseAudio sound server Audio device type: ALSA Audio output channels: 2 Audio device sample rate: 44100 Audio device buffer size: 1024 Created audio component. Created message center. Created info label. Created graph viewer. Adding tab with index 1 Adding tab with index 2 Created data viewport. Created editor viewport. Created control panel. Created filter list. Created plugin manager Loading Plugin: ArduinoOutput... Loading Plugin: CAR... Loading Plugin: FilterNode... Loading Plugin: Rectifier... Loading Plugin: BasicSpikeDisplay... Loading Plugin: RhythmNode... Loading Plugin: EvntTrigAvg... Loading Plugin: LfpDisplayNode... Loading Plugin: ChannelMappingNode... Loading Plugin: IntanRecordingController... Loading Plugin: RecordControl... Loading Plugin: PhaseDetector... Loading Plugin: LfpDisplayNodeBeta... Loading Plugin: SpikeSorter... Loading Plugin: PulsePalOutput... Loading Plugin: SerialInput... Loading Plugin: ZMQInterface... /home/pjmxeon/Desktop/plugin-GUI-master/Source/Processors/PluginManager/PluginManager.cpp:219: Failed to load plugin DLL: /home/pjmxeon/.open-ephys/plugins/ZMQInterface.so: undefined symbol: _ZThn208_N13GenericEditor13timerCallbackEv DLL Load FAILED Num built in engines: 2 Adding engine: Binary Adding engine: Open Ephys Num plugin engines: 0

Loading window bounds.

Comparing configs Loading processor graph. Creating processor with name: ZMQ Interface Creating from plugin info... ZMQ Interface(1)::ZMQ Interface Segmentation fault (core dumped)

arnefmeyer commented 3 years ago

Maybe the ZMQInterface.so file in the ~/.open-ephys/plugins folder is a relict of your binary install (potentially using a slightly older API). Try to 1) remove (or update) the plugin using the plugin installer GUI or 2) manually remove the file and update the "installedPlugins.xml" file in the plugins folder.