doh, I missed the part about 64bit Pd. my test was with 32bit Pd. but I don't 
know why the 64bit version wouldn't export the same symbols... 

> I assumed that **_WIN32** must be defined (isn't it?)

it should be defined by MSVC, see 
https://msdn.microsoft.com/en-us/library/b0084kay.aspx.

"_WIN32 Defined as 1 when the compilation target is 32-bit ARM, 64-bit ARM, 
x86, or x64. Otherwise, undefined.
 _WIN64 Defined as 1 when the compilation target is 64-bit ARM or x64. 
Otherwise, undefined."

> and so **PD_INTERNAL** must also be used if we want to export properly the 
> function `setup_class()` using **EXTERN**. 

yes, if you compile Pd with MSVC, but MinGW will automatically export all 
symbols.


I'll now try again with the 64-bit Pd.



Gesendet: Mittwoch, 23. Mai 2018 um 14:09 Uhr
Von: "Pierre Guillot" <guillotpier...@gmail.com>
An: "Christof Ressi" <christof.re...@gmx.at>
Cc: pd-dev <pd-dev@lists.iem.at>
Betreff: Re: Re: [PD-dev] pd.lib & msvc - missing symbols

Hi Christof,
 
I'm not a specialist of Windows so I can miss something important. 
How do you specify the target machine? Are you sure you compiled against the 
64bit version of pd.lib? 
Because I didn't check the symbols of the 32 bit distribution, perhaps they are 
available. 
 
Another question: I assumed that **_WIN32** must be defined (isn't it?) and so 
**PD_INTERNAL** must also be used if we want to export properly the function 
`setup_class()` using **EXTERN**. 
I see that you don't define any of these constants, are they useless in your 
case? And why? 
 
 
2018-05-23 13:40 GMT+02:00 Christof Ressi 
<christof.re...@gmx.at[mailto:christof.re...@gmx.at]>:this is odd. I made a 
simple Pd external which uses s_list and s_signal with MSVC in two versions:
one links against Miller's pd.lib, the other links against the pd.lib I get 
when building from source with MinGW and autotools.
Both versions compile, link and load just fine with either Pd version.

I'm using the Developer command prompt, these are my commands:

> cl /W3 /DNT /DPD /nologo /I. /IPDSOURCEPATH /c testobj.c
> link /dll /export:testobj_setup testobj.obj oldnames.lib kernel32.lib 
> PDBINPATH\pd.lib

Christof
 

Gesendet: Mittwoch, 23. Mai 2018 um 12:01 Uhr
Von: "Pierre Guillot" 
<guillotpier...@gmail.com[mailto:guillotpier...@gmail.com]>
An: "IOhannes m zmoelnig" <zmoel...@iem.at[mailto:zmoel...@iem.at]>
Cc: pd-dev <pd-dev@lists.iem.at[mailto:pd-dev@lists.iem.at]>
Betreff: Re: [PD-dev] pd.lib & msvc - missing symbols

> however, it would be nice if the shipped pd.lib (which uses the MinGW
> toolchain and doesn't have the MSVC tools) would contain all the
> required symbols.
 
Yes, what seems strange is that s_list and s_signal were defined in the shipped 
pd.def but not in pd.lib...
 
> otoh, i do think that those global variables (`e.g. `s_float`) shouldn't
> be used in the first place: use the `gensym()` equivalents.
 

Why? 
I used these variable because I assumed that they are more efficient than using 
`gensym()` (and as they are defined EXTERN I also assumed that they can be 
used). 
But yes perhaps a better solution would be to generate and store the symbols in 
the new method of the object using `gensym()` (and it will be the same but for 
the sustainability of old codes, these symbols must be included).
 
Thanks
 
2018-05-23 11:38 GMT+02:00 IOhannes m zmoelnig 
<zmoel...@iem.at[mailto:zmoel...@iem.at][mailto:zmoel...@iem.at[mailto:zmoel...@iem.at]]>:On
 2018-05-23 11:29, Pierre Guillot wrote:
> But there are missing symbols: on Windows
> 64bit I can't use s_list and s_signal for example. I solved the issue by
> creating my own pd.lib and pd.def from pd.dll. So if you encounter the same
> issue, you can simply do
>
>> dumpbin /EXPORTS pd.dll > pd.exports
>> lib /def:pd.def /out:pd.lib

the problem with this is that it requires MSVC tools
now, the target audience are MSVC-users (who else needs that pd.lib...),
so they already have it.
however, it would be nice if the shipped pd.lib (which uses the MinGW
toolchain and doesn't have the MSVC tools) would contain all the
required symbols.

otoh, i do think that those global variables (`e.g. `s_float`) shouldn't
be used in the first place: use the `gensym()` equivalents.

gasdmr
IOhannes

> I hope it could help some of you. Perhaps we could add a documentation
> somewhere about it... (I don't know if it useful...) I can help if needed.



 
_______________________________________________
Pd-dev mailing list
Pd-dev@lists.iem.at[mailto:Pd-dev@lists.iem.at][mailto:Pd-dev@lists.iem.at[mailto:Pd-dev@lists.iem.at]]
https://lists.puredata.info/listinfo/pd-dev[https://lists.puredata.info/listinfo/pd-dev]
 _______________________________________________ Pd-dev mailing list 
Pd-dev@lists.iem.at[mailto:Pd-dev@lists.iem.at] 
https://lists.puredata.info/listinfo/pd-dev[https://lists.puredata.info/listinfo/pd-dev]

_______________________________________________
Pd-dev mailing list
Pd-dev@lists.iem.at
https://lists.puredata.info/listinfo/pd-dev

Reply via email to