On Thu, 14 Jul 2011 20:15 +0200, "luca paganotti" luca.paganotti@gmail.com wrote:
On Thu, Jul 14, 2011 at 7:02 PM, Hans-Christoph Steiner hans@at.or.atwrote:
On Thu, 14 Jul 2011 12:44 -0400, "Mathieu Bouchard" matju@artengine.ca wrote:
On Thu, 14 Jul 2011, luca paganotti wrote:
but ... I get 'undefined reference' (s) for all the pd symbols that are used by helloworld.c i.e. pd_new, gensym, class_new, class_addbang,
post
You need to use the -shared option to produce a .so or .DLL file.
In addition, you need to link with PD.DLL (a Windows-only requirement... no such equivalent on other platforms).
Hey Luca,
This is great, that you got this far! Can you write up a wiki page in the dev section. Don't worry too much about formatting, mostly just get the info in there. http://puredata.info/docs/developer
I think it's a very trivial thing for a wiki page, I mean is not such a great thing ....
As for Makefiles, if you use the the Library Template, then the Makefile will work on MinGW, Cygwin, Mac OS X, GNU/Linux, Android, iOS, etc. http://puredata.info/docs/developer/LibraryTemplate
.hc
ok, got the template from svn,
use it as it is trying to build a 'mycobject' as defined by the code ...
getting these results in eclipse console:
**** Build of configuration Default for project mycobject ****
make all Building target: mycobject Invoking: MinGW C++ Linker g++ -L"C:\Programmi\pd\bin" -o"mycobject" ./mycobject.o -l"C:/Programmi/pd/bin/pd.lib" c:/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../../mingw32/bin/ld.exe: cannot find -lC:/Programmi/pd/bin/pd.lib collect2: ld returned 1 exit status make: *** [mycobject] Error 1
what I really do not understand is that I have my pd.lib file exactly in the folder were ld on bhalf eclipse searches for it, i.e. C:\Programmi\pd\bin\pd.lib
Anyway I then tryed the hard way from the mingw console issueing a 'make all' getting finally a usefull error message:
Pag@XP-PAG /c/dev/c++/pd-externals/mycobject $ make clean sed: can't read mycobject-meta.pd: No such file or directory sed: can't read mycobject-meta.pd: No such file or directory sed: can't read mycobject-meta.pd: No such file or directory sed: can't read mycobject-meta.pd: No such file or directory sed: can't read mycobject-meta.pd: No such file or directory rm -f -- mycobject.o rm -f -- mycobject.dll rm -f -- mycobject.o rm -f -- mycobject.dll
Pag@XP-PAG /c/dev/c++/pd-externals/mycobject $ make all sed: can't read mycobject-meta.pd: No such file or directory sed: can't read mycobject-meta.pd: No such file or directory sed: can't read mycobject-meta.pd: No such file or directory sed: can't read mycobject-meta.pd: No such file or directory sed: can't read mycobject-meta.pd: No such file or directory sed: can't read mycobject-meta.pd: No such file or directory cc -I"/c/Programmi/pd/include/pd" -Wall -W -g -DPD -DVERSION='""' -mms-bitfields -O3 -funroll-loops -fomit-frame-pointer -o "mycobject.o" -c "mycobject.c" /bin/sh: cc: command not found make: *** [mycobject.o] Error 127
perhaps does it means that the compiler command is not defined in the makefile?
I added this line
CC = gcc
between the OS = windows and PD_PATH = $(shell cd "$(PROGRAMFILES)"/pd && pwd) lines
inside the ifeq (MINGW,$(findstring MINGW,$(UNAME))) ... endif block
and then got:
Pag@XP-PAG /c/dev/c++/pd-externals/mycobject $ make all sed: can't read mycobject-meta.pd: No such file or directory sed: can't read mycobject-meta.pd: No such file or directory sed: can't read mycobject-meta.pd: No such file or directory sed: can't read mycobject-meta.pd: No such file or directory sed: can't read mycobject-meta.pd: No such file or directory sed: can't read mycobject-meta.pd: No such file or directory gcc -I"/c/Programmi/pd/include/pd" -Wall -W -g -DPD -DVERSION='""' -mms-bitfield s -O3 -funroll-loops -fomit-frame-pointer -o "mycobject.o" -c "mycobject.c" gcc -s -shared -Wl,--enable-auto-import -o "mycobject.dll" "mycobject.o" -L"/ c/Programmi/pd/src/" -L"/c/Programmi/pd/bin/" -lpd -lwsock32 -lkernel32 -luser32 -lgdi32 chmod a-x "mycobject.dll"
Pag@XP-PAG /c/dev/c++/pd-externals/mycobject $
I got the mycobject dll that runs fine under pd-extended on a windows box.
Still wondering why eclise doen't find my pd.lib
At least this is working now from the command line.
I finally added some "getting started" instructions, hopefully this is useful:
https://puredata.info/docs/developer/LibraryTemplate
.hc