On Dec 17, 2007, at 6:10 AM, Martin Peach wrote:
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 declaredThis 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 qHe 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.
Every Windows compiler will automatically define _WIN32 so that's the
preferred macro to use. MSW is a Pd-specific thing.
.hc
Access to computers should be unlimited and total. - the hacker ethic