[PD] creating external on windows (again)

Martin Peach martin.peach at sympatico.ca
Mon Dec 17 15:10:37 CET 2007


altern wrote:
> hi
>
> i was asking about creating an external on windows few weeks ago, here i 
> am again, now i have detailed info about the error the engineer from my 
> uni is getting. He says he is using microsoft dev estydio 6.0 and pd.lib 
> library to try to compile the "hello world" example. The source code is
>
> #include <m_pd.h>
> static t_class *helloworld_class;
> typedef struct _helloworld {
> t_object x_obj;
> } t_helloworld;
> void helloworld_bang(t_helloworld *x)
> {
> post("Hello world !!");
> }
> void *helloworld_new(void)
> {
>   t_helloworld *x = (t_helloworld *)pd_new(helloworld_class);
>   return (void *)x;
> }
> void helloworld_setup(void) {
>   helloworld_class = class_new(gensym("helloworld"),
>        (t_newmethod)helloworld_new,
>        0, sizeof(t_helloworld),
>        CLASS_DEFAULT,(t_atomtype)0); // He tenido que hacer este
>            para que el compilador no me
>             de error
>   class_addbang(helloworld_class, helloworld_bang);
>   }
>
>   
It's a good idea to declare all functions static except for the setup 
function to avoid "polluting the namespace".

> he does not get error but some warnings when compiling:
>
> compiling...
> hello.cpp
> C:\Archivos de programa\Microsoft Visual Studio\VC98\INCLUDE\m_pd.h(71)
> : warning C4091: 'extern ' : ignored on left of 'struct _array' when no
> variable is declared
>   

This happens because MSW was not #defined.

> C:\Archivos de programa\Microsoft Visual Studio\VC98\INCLUDE\m_pd.h(141)
> : warning C4091: 'extern ' : ignored on left of 'struct _class' when no
> variable is declared
> C:\Archivos de programa\Microsoft Visual Studio\VC98\INCLUDE\m_pd.h(144)
> : warning C4091: 'extern ' : ignored on left of 'struct _outlet' when no
> variable is declared
> C:\Archivos de programa\Microsoft Visual Studio\VC98\INCLUDE\m_pd.h(147)
> : warning C4091: 'extern ' : ignored on left of 'struct _inlet' when no
> variable is declared
> C:\Archivos de programa\Microsoft Visual Studio\VC98\INCLUDE\m_pd.h(150)
> : warning C4091: 'extern ' : ignored on left of 'struct _binbuf' when no
> variable is declared
> C:\Archivos de programa\Microsoft Visual Studio\VC98\INCLUDE\m_pd.h(153)
> : warning C4091: 'extern ' : ignored on left of 'struct _clock' when no
> variable is declared
> C:\Archivos de programa\Microsoft Visual Studio\VC98\INCLUDE\m_pd.h(156)
> : warning C4091: 'extern ' : ignored on left of 'struct _outconnect'
> when no variable is declared
> C:\Archivos de programa\Microsoft Visual Studio\VC98\INCLUDE\m_pd.h(159)
> : warning C4091: 'extern ' : ignored on left of 'struct _glist' when no
> variable is declared
> C:\Archivos de programa\Microsoft Visual Studio\VC98\INCLUDE\m_pd.h(381)
> : warning C4091: 'extern ' : ignored on left of 'struct _widgetbehavior'
> when no variable is declared
> C:\Archivos de programa\Microsoft Visual Studio\VC98\INCLUDE\m_pd.h(384)
> : warning C4091: 'extern ' : ignored on left of 'struct
> _parentwidgetbehavior' when no variable is declared
> C:\Archivos de programa\Microsoft Visual Studio\VC98\INCLUDE\m_pd.h(571)
> : warning C4091: 'extern ' : ignored on left of 'struct _garray' when no
> variable is declared
> Linking...
> LINK : warning LNK4089: all references to "pd.dll" discarded by /OPT:REF
> helloworld.dll - 0 error(s), 12 warning(s)
>
>   
It probably means that because MSW was not defined, the symbols from 
pd.dll were not exported. Also you should link against pd.lib, not pd.dll.

> He is worroed about this warning LINK : warning LNK4089: all references to
> "pd.dll" discarded by /OPT:REF q
>
> He does not know what that means
>
> Once the dll is created he places it in the right location, tries to 
> instantiate it on pd and he gets :
>
> helloworld
> ... couldn't create
>
>   
Start by defining MSW in the preprocessor defines part of the project.

Martin




More information about the Pd-list mailing list