Hello: I followed Alberto Zin's instructions for compiling pd externals using Mingw and they worked OK. But: I modified de hello.c code adding the opening and closing of a file. Of course, the <stdio.h> header file must be added to the code. Attached to this message is the modified "hello.c". The code compiles Ok, and I get the hello.o using the following command line:
C:\pd\isidro\hello>gcc -c hello.c -o hello.o
But when I try to link to get the Dll file, I get the following message:
C:\pd\isidro\hello>ld -export_dynamic -shared -o hello.dll hello.o c:/pd/bin/pd.dll
hello.o(.text+0x16):hello.c: undefined reference to `fopen' hello.o(.text+0x30):hello.c: undefined reference to `fclose'
The same I get if I use some Standard Library Function like <string.h> or other... Maybe I am doing something really stupid but if you know what's up it will save lots of time to me... Many thanks Isi
____________________________________________________________________________________ Get the free Yahoo! toolbar and rest assured with the added security of spyware protection. http://new.toolbar.yahoo.com/toolbar/features/norton/index.php
#include "m_pd.h" #include <stdio.h>
static t_class *hello_class;
typedef struct _hello{ t_object x_obj; } t_hello;
void hello_bang(t_hello *x) { FILE *fil;
fil=fopen("any","rb"); post("File any opened"); fclose(fil); }
void *hello_new(void) { t_hello *x = (t_hello *)pd_new(hello_class);
return (void *)x; }
void hello_setup(void) { hello_class = class_new(gensym("hello"), (t_newmethod)hello_new, 0, sizeof(t_hello), CLASS_DEFAULT, 0); class_addbang(hello_class, hello_bang); }
If your MinGW DLLs are not in a standard UNIX path, then you'll need to add a -L/path/to/lib to your linking statement. Also, you'll be better off using gcc rather than ld for linking. gcc knows all the apps to call to link things.
If you follow these directions, then the MinGW libs will be located in /usr/local/lib, which is a standard UNIX path, then no special cmd line options are needed:
http://puredata.org/docs/developer/mingw
.hc
On Jul 14, 2007, at 1:37 PM, Isidro Gonzalez wrote:
Hello: I followed Alberto Zin's instructions for compiling pd externals using Mingw and they worked OK. But: I modified de hello.c code adding the opening and closing of a file. Of course, the <stdio.h> header file must be added to the code. Attached to this message is the modified "hello.c". The code compiles Ok, and I get the hello.o using the following command line:
C:\pd\isidro\hello>gcc -c hello.c -o hello.o
But when I try to link to get the Dll file, I get the following message:
C:\pd\isidro\hello>ld -export_dynamic -shared -o hello.dll hello.o c:/pd/bin/pd.dll
hello.o(.text+0x16):hello.c: undefined reference to `fopen' hello.o(.text+0x30):hello.c: undefined reference to `fclose'
The same I get if I use some Standard Library Function like <string.h> or other... Maybe I am doing something really stupid but if you know what's up it will save lots of time to me... Many thanks Isi
Get the free Yahoo! toolbar and rest assured with the added security of spyware protection. http://new.toolbar.yahoo.com/toolbar/features/norton/ index.php#include "m_pd.h" #include <stdio.h>
static t_class *hello_class;
typedef struct _hello{ t_object x_obj; } t_hello;
void hello_bang(t_hello *x) { FILE *fil;
fil=fopen("any","rb"); post("File any opened"); fclose(fil); }
void *hello_new(void) { t_hello *x = (t_hello *)pd_new(hello_class);
return (void *)x; }
void hello_setup(void) { hello_class = class_new(gensym("hello"), (t_newmethod)hello_new, 0, sizeof(t_hello), CLASS_DEFAULT, 0); class_addbang(hello_class, hello_bang); }
PD-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/ listinfo/pd-list
------------------------------------------------------------------------ ----
The arc of history bends towards justice. - Dr. Martin Luther King, Jr.