This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
pcb:plugins [2018/06/23 10:26] cparker |
pcb:plugins [2018/06/23 13:19] cparker [Plugin Mechanics] |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ======pcb Plugins====== | ||
pcb has a plug-in mechanism that allows developers to add or modify its functionality. Plugins can add pcb actions, hook into the GUI HIDs, create new exporters, and more. For a tutorial on the basics of writing and installing a pluging, see the hello world example on the [[geda:pcb_developer_introduction_2| pcb Developer Introduction]] page. This page will discuss how plugins interact with the pcb system. | pcb has a plug-in mechanism that allows developers to add or modify its functionality. Plugins can add pcb actions, hook into the GUI HIDs, create new exporters, and more. For a tutorial on the basics of writing and installing a pluging, see the hello world example on the [[geda:pcb_developer_introduction_2| pcb Developer Introduction]] page. This page will discuss how plugins interact with the pcb system. | ||
=====Plugin Mechanics===== | =====Plugin Mechanics===== | ||
+ | pcb plugins are essentially shared libraries that pcb will load at run-time. Because of this, they can be written in just about any language that can be compiled into a shared library. I haven't verified anything other than C and C++, but it ought to be possible. If you've successfully written a plugin in another language, let me know! | ||
+ | At runtime, pcb scans several directories for .so/.dll files. If it finds one, it opens it and looks for a couple of symbols: "hid_<file basename>_init" and "pcb_plugin_init". If it finds one, it executes it as a function. These functions are responsible for registering the code they represent with pcb. | ||
====Registration==== | ====Registration==== | ||