falkTX / Carla

Audio plugin host
https://kx.studio/carla
1.61k stars 147 forks source link

symbol undefined: carla_get_engine_driver_count #205

Closed ssj71 closed 9 years ago

ssj71 commented 9 years ago

I've got it compiling from source now (fresh clone this morning), but when I go to run it gives the following error:

Traceback (most recent call last):
  File "source/carla", line 69, in <module>
    host = initHost(initName, libPrefix, False, False, True)
  File "/home/spencer/other_projects/carla-code/source/carla_host.py", line 2084, in initHost
    host = PluginClass() if isPlugin else CarlaHostQtDLL(os.path.join(pathBinaries, libname))
  File "/home/spencer/other_projects/carla-code/source/carla_backend_qt.py", line 103, in __init__
    CarlaHostSignals.__init__(self)
  File "/home/spencer/other_projects/carla-code/source/carla_backend.py", line 2093, in __init__
    self.lib.carla_get_engine_driver_count.argtypes = None
  File "/usr/lib/python3.4/ctypes/__init__.py", line 364, in __getattr__
    func = self.__getitem__(name)
  File "/usr/lib/python3.4/ctypes/__init__.py", line 369, in __getitem__
    func = self._FuncPtr((name_or_ordinal, self))
AttributeError: /usr/bin/python3: undefined symbol: carla_get_engine_driver_count

I think I've got all of the required dependencies.

falkTX commented 9 years ago

I don't know what's going on here... Can you paste a full build log?

ssj71 commented 9 years ago

1 min

falkTX commented 9 years ago

well, that doesn't include the libcarla_standalone2.so object.

Please try a new fresh clone again.

(btw, which compiler are you using? I guess gcc4.9 on arch?)

ssj71 commented 9 years ago

snipped old build log

ssj71 commented 9 years ago

I'll try to reclone and try again.

ssj71 commented 9 years ago

Sorry I'm making a mess of it. Fresh clone. Compiler is g++ 4.8.2-19ubuntu1 on vanilla ubuntu with kx repos. Same results, here's the new build log:

make[1]: Entering directory `/home/spencer/other_projects/carla-code/source/backend/engine'
Compiling CarlaEngineOscSend.cpp
Compiling CarlaEnginePorts.cpp
Compiling CarlaEngineThread.cpp
Compiling CarlaEngineJack.cpp
Compiling CarlaEngineNative.cpp
Compiling CarlaEngineRtAudio.cpp
Creating carla_engine.a
Compiling CarlaEngineNative.cpp (plugin)
Creating carla_engine_plugin.a
make[1]: Leaving directory `/home/spencer/other_projects/carla-code/source/backend/engine'
make[1]: Entering directory `/home/spencer/other_projects/carla-code/source/backend/plugin'
Compiling CarlaPlugin.cpp
Compiling CarlaPluginInternal.cpp
Compiling CarlaPluginNative.cpp
Compiling CarlaPluginBridge.cpp
Compiling CarlaPluginLADSPA.cpp
Compiling CarlaPluginDSSI.cpp
Compiling CarlaPluginLV2.cpp
Compiling CarlaPluginVST2.cpp
Compiling CarlaPluginVST3.cpp
Compiling CarlaPluginAU.cpp
Compiling CarlaPluginJuce.cpp
Compiling CarlaPluginFluidSynth.cpp
Compiling CarlaPluginLinuxSampler.cpp
Creating carla_plugin.a
make[1]: Leaving directory `/home/spencer/other_projects/carla-code/source/backend/plugin'
make[1]: Entering directory `/home/spencer/other_projects/carla-code/source/jackbridge'
Compiling JackBridge1.cpp
Compiling JackBridge2.cpp
Creating jackbridge.a
make[1]: Leaving directory `/home/spencer/other_projects/carla-code/source/jackbridge'
make[1]: Entering directory `/home/spencer/other_projects/carla-code/source/native-plugins'
Compiling _all.c
Compiling bypass.c
Compiling lfo.c
Compiling midi-gain.c
Compiling midi-split.c
Compiling midi-through.c
Compiling midi-transpose.c
Compiling nekofilter.c
Compiling audio-file.cpp
Compiling bigmeter.cpp
Compiling midi-file.cpp
Compiling midi-sequencer.cpp
Compiling notes.cpp
Compiling distrho-3bandeq.cpp
Compiling distrho-3bandsplitter.cpp
# FIXME - fix mverb strict warnings
Compiling distrho-mverb.cpp
# FIXME - fix nekobi strict warnings
Compiling distrho-nekobi.cpp
Compiling distrho-pingpongpan.cpp
Creating native-plugins.a
make[1]: Leaving directory `/home/spencer/other_projects/carla-code/source/native-plugins'
make[1]: Entering directory `/home/spencer/other_projects/carla-code/source/modules/juce_audio_basics'
Compiling juce_audio_basics.cpp
Creating juce_audio_basics.a
make[1]: Leaving directory `/home/spencer/other_projects/carla-code/source/modules/juce_audio_basics'
make[1]: Entering directory `/home/spencer/other_projects/carla-code/source/modules/juce_audio_formats'
Compiling juce_audio_formats.cpp
Creating juce_audio_formats.a
make[1]: Leaving directory `/home/spencer/other_projects/carla-code/source/modules/juce_audio_formats'
make[1]: Entering directory `/home/spencer/other_projects/carla-code/source/modules/juce_core'
Compiling juce_core.cpp
Creating juce_core.a
make[1]: Leaving directory `/home/spencer/other_projects/carla-code/source/modules/juce_core'
make[1]: Entering directory `/home/spencer/other_projects/carla-code/source/modules/lilv'
Compiling serd.c
Compiling sord.c
Compiling sratom.c
Compiling lilv.c
Creating lilv.a
make[1]: Leaving directory `/home/spencer/other_projects/carla-code/source/modules/lilv'
make[1]: Entering directory `/home/spencer/other_projects/carla-code/source/modules/rtmempool'
Compiling rtmempool.c
Creating rtmempool.a
make[1]: Leaving directory `/home/spencer/other_projects/carla-code/source/modules/rtmempool'
make[1]: Entering directory `/home/spencer/other_projects/carla-code/source/modules/dgl'
Compiling src/App.cpp
Compiling src/Color.cpp
Compiling src/Geometry.cpp
Compiling src/Image.cpp
Compiling src/ImageAboutWindow.cpp
Compiling src/ImageButton.cpp
Compiling src/ImageKnob.cpp
Compiling src/ImageSlider.cpp
Compiling src/ImageSwitch.cpp
Compiling src/NanoVG.cpp
Compiling src/Widget.cpp
Compiling src/Window.cpp
Creating dgl.a
make[1]: Leaving directory `/home/spencer/other_projects/carla-code/source/modules/dgl'
make[1]: Entering directory `/home/spencer/other_projects/carla-code/source/modules/rtaudio'
Compiling RtAudio.cpp
Creating rtaudio.a
make[1]: Leaving directory `/home/spencer/other_projects/carla-code/source/modules/rtaudio'
make[1]: Entering directory `/home/spencer/other_projects/carla-code/source/modules/rtmidi'
Compiling RtMidi.cpp
Creating rtmidi.a
make[1]: Leaving directory `/home/spencer/other_projects/carla-code/source/modules/rtmidi'
make[1]: Entering directory `/home/spencer/other_projects/carla-code/source/theme'
Generating moc_CarlaStyle.qt5.cpp
Generating moc_CarlaStyleAnimations.qt5.cpp
Generating moc_CarlaStylePlugin.qt5.cpp
Generating moc_CarlaStylePrivate.qt5.cpp
Generating resources.qt5.cpp
Compiling CarlaStyle.cpp (Qt5)
Compiling moc_CarlaStyle.cpp (Qt5)
Compiling moc_CarlaStyleAnimations.cpp (Qt5)
Compiling moc_CarlaStylePrivate.cpp (Qt5)
Compiling resources.cpp (Qt5)
Creating theme.qt5.a
make[1]: Leaving directory `/home/spencer/other_projects/carla-code/source/theme'
make[1]: Entering directory `/home/spencer/other_projects/carla-code/source/backend'
Compiling CarlaStandalone.cpp
Linking libcarla_standalone2.so
Compiling CarlaUtils.cpp
Linking libcarla_utils.so
make[1]: Leaving directory `/home/spencer/other_projects/carla-code/source/backend'
make[1]: Entering directory `/home/spencer/other_projects/carla-code/source/discovery'
Compiling carla-discovery.cpp
Linking carla-discovery-native
make[1]: Leaving directory `/home/spencer/other_projects/carla-code/source/discovery'
make[1]: Entering directory `/home/spencer/other_projects/carla-code/source/bridges-plugin'
Compiling CarlaBridgePlugin.cpp
Compiling CarlaEngine.cpp (bridge)
Compiling CarlaEngineClient.cpp (bridge)
Compiling CarlaEngineData.cpp (bridge)
Compiling CarlaEngineInternal.cpp (bridge)
Compiling CarlaEngineOsc.cpp (bridge)
Compiling CarlaEngineOscSend.cpp (bridge)
Compiling CarlaEnginePorts.cpp (bridge)
Compiling CarlaEngineThread.cpp (bridge)
Compiling CarlaEngineJack.cpp (bridge)
Compiling CarlaEngineBridge.cpp (bridge)
Compiling CarlaPlugin.cpp (bridge)
Compiling CarlaPluginInternal.cpp (bridge)
Compiling CarlaPluginBridge.cpp (bridge)
Compiling CarlaPluginNative.cpp (bridge)
Compiling CarlaPluginLADSPA.cpp (bridge)
Compiling CarlaPluginDSSI.cpp (bridge)
Compiling CarlaPluginLV2.cpp (bridge)
Compiling CarlaPluginVST2.cpp (bridge)
Compiling CarlaPluginVST3.cpp (bridge)
Compiling CarlaPluginAU.cpp (bridge)
Compiling CarlaPluginJuce.cpp (bridge)
Compiling CarlaPluginFluidSynth.cpp (bridge)
Compiling CarlaPluginLinuxSampler.cpp (bridge)
Compiling CarlaStandalone.cpp (bridge)
Linking carla-bridge-native
make[1]: Leaving directory `/home/spencer/other_projects/carla-code/source/bridges-plugin'
make[1]: Entering directory `/home/spencer/other_projects/carla-code/source/bridges-ui'
Compiling CarlaBridgeUI.cpp
Compiling CarlaBridgeUI-LV2.cpp (GTK2)
Compiling CarlaBridgeToolkitGtk.cpp (GTK2)
Linking carla-bridge-lv2-gtk2
Generating CarlaBridgeToolkitQt5.moc
Generating resources.qt5.cpp
Compiling CarlaBridgeUI-LV2.cpp (QT5)
Compiling CarlaBridgeToolkitQt.cpp (QT5)
Linking carla-bridge-lv2-qt5
Compiling CarlaBridgeUI-LV2.cpp (X11)
Compiling CarlaBridgeToolkitPlugin.cpp (X11)
Linking carla-bridge-lv2-x11
make[1]: Leaving directory `/home/spencer/other_projects/carla-code/source/bridges-ui'
make[1]: Entering directory `/home/spencer/other_projects/carla-code/source/interposer'
Compiling interposer-safe.cpp
Linking libcarla_interposer-safe.so
Compiling interposer-x11.cpp
Linking libcarla_interposer-x11.so
make[1]: Leaving directory `/home/spencer/other_projects/carla-code/source/interposer'
make[1]: Entering directory `/home/spencer/other_projects/carla-code/source/plugin'
Compiling carla-lv2.cpp
Linking carla.lv2/carla.so
Compiling carla-lv2-export.cpp
Linking carla-lv2-export
Generating LV2 ttl data
Generating data for Bypass...
Generating data for LFO...
Generating data for NekoFilter...
Generating data for Carla-Rack...
Generating data for Carla-Patchbay...
Generating data for Carla-Patchbay (sidechain)...
Generating data for Carla-Patchbay (16chan)...
Generating data for Carla-Patchbay (32chan)...
Generating data for Big Meter...
CarlaPipeCommon::CarlaPipeCommon()
CarlaPipeServer::CarlaPipeServer()
CarlaPipeServer::~CarlaPipeServer()
CarlaPipeServer::stopPipeServer(5000)
CarlaPipeServer::closePipeServer()
CarlaPipeCommon::~CarlaPipeCommon()
Generating data for Notes...
CarlaPipeCommon::CarlaPipeCommon()
CarlaPipeServer::CarlaPipeServer()
CarlaPipeServer::~CarlaPipeServer()
CarlaPipeServer::stopPipeServer(5000)
CarlaPipeServer::closePipeServer()
CarlaPipeCommon::~CarlaPipeCommon()
Done.
make[1]: Leaving directory `/home/spencer/other_projects/carla-code/source/plugin'
make[1]: Entering directory `/home/spencer/other_projects/carla-code/source/theme'
Compiling CarlaStylePlugin.cpp (Qt5)
Compiling moc_CarlaStylePlugin.cpp (Qt5)
Linking carlastyle.so
make[1]: Leaving directory `/home/spencer/other_projects/carla-code/source/theme'
ln -sf /home/spencer/other_projects/carla-code/source/carla_app.py bin/resources/
ln -sf /home/spencer/other_projects/carla-code/source/carla_backend.py bin/resources/
ln -sf /home/spencer/other_projects/carla-code/source/carla_backend_qt.py bin/resources/
ln -sf /home/spencer/other_projects/carla-code/source/carla_config.py bin/resources/
ln -sf /home/spencer/other_projects/carla-code/source/carla_database.py bin/resources/
ln -sf /home/spencer/other_projects/carla-code/source/carla_host.py bin/resources/
ln -sf /home/spencer/other_projects/carla-code/source/carla_panels.py bin/resources/
ln -sf /home/spencer/other_projects/carla-code/source/carla_settings.py bin/resources/
ln -sf /home/spencer/other_projects/carla-code/source/carla_skin.py bin/resources/
ln -sf /home/spencer/other_projects/carla-code/source/carla_shared.py bin/resources/
ln -sf /home/spencer/other_projects/carla-code/source/carla_utils.py bin/resources/
ln -sf /home/spencer/other_projects/carla-code/source/carla_widgets.py bin/resources/
ln -sf widgets/canvaspreviewframe.py source/canvaspreviewframe.py
ln -sf /home/spencer/other_projects/carla-code/source/canvaspreviewframe.py bin/resources/
ln -sf widgets/digitalpeakmeter.py source/digitalpeakmeter.py
ln -sf /home/spencer/other_projects/carla-code/source/digitalpeakmeter.py bin/resources/
ln -sf /home/spencer/other_projects/carla-code/source/externalui.py bin/resources/
ln -sf widgets/ledbutton.py source/ledbutton.py
ln -sf /home/spencer/other_projects/carla-code/source/ledbutton.py bin/resources/
ln -sf widgets/paramspinbox.py source/paramspinbox.py
ln -sf /home/spencer/other_projects/carla-code/source/paramspinbox.py bin/resources/
ln -sf /home/spencer/other_projects/carla-code/source/patchcanvas.py bin/resources/
ln -sf /home/spencer/other_projects/carla-code/source/patchcanvas_theme.py bin/resources/
ln -sf widgets/pixmapbutton.py source/pixmapbutton.py
ln -sf /home/spencer/other_projects/carla-code/source/pixmapbutton.py bin/resources/
ln -sf widgets/pixmapdial.py source/pixmapdial.py
ln -sf /home/spencer/other_projects/carla-code/source/pixmapdial.py bin/resources/
ln -sf widgets/pixmapkeyboard.py source/pixmapkeyboard.py
ln -sf /home/spencer/other_projects/carla-code/source/pixmapkeyboard.py bin/resources/
ln -sf widgets/racklistwidget.py source/racklistwidget.py
ln -sf /home/spencer/other_projects/carla-code/source/racklistwidget.py bin/resources/
pyrcc5 resources/resources.qrc -o source/resources_rc.py
ln -sf /home/spencer/other_projects/carla-code/source/resources_rc.py bin/resources/
pyuic5 resources/ui/carla_about.ui -o source/ui_carla_about.py
ln -sf /home/spencer/other_projects/carla-code/source/ui_carla_about.py bin/resources/
pyuic5 resources/ui/carla_about_juce.ui -o source/ui_carla_about_juce.py
ln -sf /home/spencer/other_projects/carla-code/source/ui_carla_about_juce.py bin/resources/
pyuic5 resources/ui/carla_database.ui -o source/ui_carla_database.py
ln -sf /home/spencer/other_projects/carla-code/source/ui_carla_database.py bin/resources/
pyuic5 resources/ui/carla_edit.ui -o source/ui_carla_edit.py
ln -sf /home/spencer/other_projects/carla-code/source/ui_carla_edit.py bin/resources/
pyuic5 resources/ui/carla_host.ui -o source/ui_carla_host.py
ln -sf /home/spencer/other_projects/carla-code/source/ui_carla_host.py bin/resources/
pyuic5 resources/ui/carla_panel_time.ui -o source/ui_carla_panel_time.py
ln -sf /home/spencer/other_projects/carla-code/source/ui_carla_panel_time.py bin/resources/
pyuic5 resources/ui/carla_parameter.ui -o source/ui_carla_parameter.py
ln -sf /home/spencer/other_projects/carla-code/source/ui_carla_parameter.py bin/resources/
pyuic5 resources/ui/carla_plugin_basic_fx.ui -o source/ui_carla_plugin_basic_fx.py
ln -sf /home/spencer/other_projects/carla-code/source/ui_carla_plugin_basic_fx.py bin/resources/
pyuic5 resources/ui/carla_plugin_calf.ui -o source/ui_carla_plugin_calf.py
ln -sf /home/spencer/other_projects/carla-code/source/ui_carla_plugin_calf.py bin/resources/
pyuic5 resources/ui/carla_plugin_compact.ui -o source/ui_carla_plugin_compact.py
ln -sf /home/spencer/other_projects/carla-code/source/ui_carla_plugin_compact.py bin/resources/
pyuic5 resources/ui/carla_plugin_default.ui -o source/ui_carla_plugin_default.py
ln -sf /home/spencer/other_projects/carla-code/source/ui_carla_plugin_default.py bin/resources/
pyuic5 resources/ui/carla_plugin_sf2.ui -o source/ui_carla_plugin_sf2.py
ln -sf /home/spencer/other_projects/carla-code/source/ui_carla_plugin_sf2.py bin/resources/
pyuic5 resources/ui/carla_plugin_zynfx.ui -o source/ui_carla_plugin_zynfx.py
ln -sf /home/spencer/other_projects/carla-code/source/ui_carla_plugin_zynfx.py bin/resources/
pyuic5 resources/ui/carla_refresh.ui -o source/ui_carla_refresh.py
ln -sf /home/spencer/other_projects/carla-code/source/ui_carla_refresh.py bin/resources/
pyuic5 resources/ui/carla_settings.ui -o source/ui_carla_settings.py
ln -sf /home/spencer/other_projects/carla-code/source/ui_carla_settings.py bin/resources/
pyuic5 resources/ui/carla_settings_driver.ui -o source/ui_carla_settings_driver.py
ln -sf /home/spencer/other_projects/carla-code/source/ui_carla_settings_driver.py bin/resources/
pyuic5 resources/ui/inputdialog_value.ui -o source/ui_inputdialog_value.py
ln -sf /home/spencer/other_projects/carla-code/source/ui_inputdialog_value.py bin/resources/
pyuic5 resources/ui/carla_control.ui -o source/ui_carla_control.py
spencer@ubuntu:~/other_projects/carla-code (master)$ 
falkTX commented 9 years ago

How are you starting carla?

It should print some info on start before reaching the missing symbol error. Please post that info.

ssj71 commented 9 years ago

gdb -ex run --args python3 source/carla

here's ./source/carla

spencer@ubuntu:~/other_projects/carla-code (master)$ ./source/carla
Using "carla" theme
Carla 1.9.6 (2.0-beta4) started, status:
  Python version: 3.4.0
  Qt version:     5.2.1
  PyQt version:   5.2.1
  Binary dir:     /home/spencer/other_projects/carla-code/bin
  Resources dir:  /home/spencer/other_projects/carla-code/bin/resources
Traceback (most recent call last):
  File "./source/carla", line 69, in <module>
    host = initHost(initName, libPrefix, False, False, True)
  File "/home/spencer/other_projects/carla-code/source/carla_host.py", line 2084, in initHost
    host = PluginClass() if isPlugin else CarlaHostQtDLL(os.path.join(pathBinaries, libname))
  File "/home/spencer/other_projects/carla-code/source/carla_backend_qt.py", line 103, in __init__
    CarlaHostSignals.__init__(self)
  File "/home/spencer/other_projects/carla-code/source/carla_backend.py", line 2093, in __init__
    self.lib.carla_get_engine_driver_count.argtypes = None
  File "/usr/lib/python3.4/ctypes/__init__.py", line 364, in __getattr__
    func = self.__getitem__(name)
  File "/usr/lib/python3.4/ctypes/__init__.py", line 369, in __getitem__
    func = self._FuncPtr((name_or_ordinal, self))
AttributeError: python3: undefined symbol: carla_get_engine_driver_count
falkTX commented 9 years ago

I have no idea what's going on here... :S

mjsuarez commented 9 years ago

Perhaps this will help. I ran into exactly the same AttributeError as @ssj71 while trying to run Carla without installing, as suggested in the INSTALL.md, i.e. ./source/carla . I happen to have the same compiler (gcc/g++ 4.8.2-19ubuntu1) and OS (Ubuntu, presumably 14.04).

I looked around in carla_backend.py and found libName in CarlaHostDLL to be empty. (There is a FIXME to hardwire this in Windows). This leads to the cdll.LoadLibrary quietly returning nothing, and thus self.lib.carla_get_xxxx not existing. I haven't dug back to the root of the absent libName (getting sleepy), but in the meantime, I too hardwired the path libName = "./bin/libcarla_standalone2.so" and Carla runs fine.

I'll look around tomorrow, if you haven't already fixed it by then.

Thanks for your fantastic work.

falkTX commented 9 years ago

If that is true (libName being empty) then this is a bug/regression in PyQt. Maybe it's an issue only with Qt5 ?

I have Ubuntu 14.04 here (and previously was on 12.04) and I'm unable to experience this. I'll try PyQt5 and see if that's the issue.

falkTX commented 9 years ago

I can confirm this happens with PyQt5 but not with PyQt4. :S So as a workaround, install python3-pyqt4, make distclean and make again. I'll investigate this.

falkTX commented 9 years ago

Qt5 messing up the environment again. Had a similar issue with the plugin pipes, had to initialize them before the QApplication...

Anyway, this is now fixed.

mjsuarez commented 9 years ago

Yep. Works great here. Thanks.

ssj71 commented 9 years ago

verified. Thanks for the fix.