An advanced tutorial on plugin developing

Hi,

the existing tutorial about plugin development is surely wonderful to start with that task.
Anyway, I met some difficulties when you need to deal with external libraries. Not only dynamic ones, that I read are more tricky, but also static one: watching an example on how to develop a simple node that have to deal with a preexisting static library would be a good example, in my opinion.

regards
michele

Thanks for the suggestion, @cremaschi. Opened for voting.

Regarding external libraries, there’s documentation here: https://api.vuo.org/latest/group___managing_dependencies.html

All libraries referenced by the built-in Vuo nodes are now dynamically linked. We’ve opted for dynamic over static libraries because it avoids problems when multiple nodes depend on the same library, when multiple compositions run in the same process, and when live editing. I’m actually not sure if live editing works with static libraries currently, since we haven’t recently tested.

This week we made a super simple example of a node class depending on a dylib that almost works. The one piece that doesn’t work yet is @rpath, which is necessary to be able to use the node class on other computers without having to modify the dylib each time.

Anyway,
dylibtest_20210623.zip (4.43 KB)
. The key points are:

  • Set the dynamic library’s install name. You can either do this when compiling the dylib, like in the example, or use the install_name_tool command in Terminal (e.g. install_name_tool -id @rpath/libfoo.dylib libfoo.dylib).
  • In the node class’s source code, under VuoModuleMetadata, add the library to the dependencies list. You would put the library name minus the “lib” and “.dylib”. For example, for libfoo.dylib you would write “foo”.

Besides external libraries, did you have anything else in mind that would be important to cover in an advanced tutorial?