[PD] general questions on externals
IOhannes m zmoelnig
zmoelnig at iem.at
Mon Dec 10 09:27:52 CET 2007
> The uni i am collaborating with has an engineer that did a image
> analisys tool on C couple of years ago. Now they want to port parts of
> it to PD creating an external. The engineer that does the job is
> checking the documentation about externals but he was getting some error.
> He doesnt have internet at home, doesnt like it. And does not use email
> much, on top of this he does not speak english ... :( so this might end
> up like japanese whispers ...
> As far as I understood he was trying to do a "hello world" example and
> was able to compile but the PD was not able to create the object despite
> of being placed into a folder within the PD path. He is using Visual
> Studio to compile. He was checking Flext as well. He was confused and he
> was asking which is the best way to go about creating externals under
> windows. I think he is using Visual Studio to compile.
the externals-howto (if he is referring to that) is pretty complete as
far as it goes to writing externals.
it does say nothing about compiling externals though.
most likely this is the problem your engineer is experiencing.
so here some tips:
- they should have a look at the makefiles for the externals that come
with Pd (pd/extra/makefile), it has a relevant esection for building
with M$VC (but only using commandline tools)
- alternatively, the examples of my externals-HOWTO are also checked
into CVS (./doc/tutorials/externals-howto/), and there you will find
Makefiles (still: using cmdline tools, also for M$VC)
- if they insist on building only from within the IDE (no cmdline
tools), they could also have a look at the M$VC project for zexy. (this
is shameless self-advertising i admit; but it is the simplest M$VC
project i know well); just use zexy.dsw / zexy.dsp (or whatever is
there) and upgrade to their version of M$VC (the IDE should handle this
automatically); then build from this project (rename the probject;
remove all files from the project; add your own files)
if they want to create the project on their own:
- an external is a .dll (something you have to tell M$VC pretty early
when you create a new project)
- the external must link against pd.lib
- an external MUST export one certain function (it MAY export more; but
this one is obligatory): "void <externalname>_setup(void)"
- the external must reside in a file of its name::
[myobj] (pd objectclass) -> myobj.dll (external-file) ->
myobj_setup() (entry point)
More information about the Pd-list