Building the new FractalSpline nodes as a library that links to libpanda.dll etc.
Mostly it builds ok, except that I get these messages:
fractalSplineRingNode.obj : error LNK2019: unresolved external symbol "__declspe
c(dllimport) public: __thiscall BitMask<unsigned long,32>::~BitMask<unsigned lon
g,32>(void)" (__imp_??1?$BitMask@K$0CA@@@QAE@XZ) referenced in function _$E2
fractalSplineTorusNode.obj : error LNK2019: unresolved external symbol "__declsp
ec(dllimport) public: __thiscall BitMask<unsigned long,32>::~BitMask<unsigned lo
ng,32>(void)" (__imp_??1?$BitMask@K$0CA@@@QAE@XZ) referenced in function _$E2
fractalSplineTubeNode.obj : error LNK2019: unresolved external symbol "__declspe
c(dllimport) public: __thiscall BitMask<unsigned long,32>::~BitMask<unsigned lon
g,32>(void)" (__imp_??1?$BitMask@K$0CA@@@QAE@XZ) referenced in function _$E2
fractalSplineBoxNode.obj : error LNK2019: unresolved external symbol "__declspec
(dllimport) public: __thiscall BitMask<unsigned long,32>::~BitMask<unsigned long
,32>(void)" (__imp_??1?$BitMask@K$0CA@@@QAE@XZ) referenced in function _$E2
fractalSplineCylinderNode.obj : error LNK2019: unresolved external symbol "__dec
lspec(dllimport) public: __thiscall BitMask<unsigned long,32>::~BitMask<unsigned
long,32>(void)" (__imp_??1?$BitMask@K$0CA@@@QAE@XZ) referenced in function _$E2
There’s a bunch of these messages; this is just a sample.
We can actually mutate these errors into warnings about local linkage by commenting out the export_template_class line in bitMask.h (line 129).
However that still leaves:
fractalSplineNode.obj : error LNK2001: unresolved external symbol "public: virtu
al class BitMask<unsigned long,32> __thiscall PandaNode::get_legal_collide_mask(
void)const " (?get_legal_collide_mask@PandaNode@@UBE?AV?$BitMask@K$0CA@@@XZ)
fractalSplinePrismNode.obj : error LNK2001: unresolved external symbol "public:
virtual class BitMask<unsigned long,32> __thiscall PandaNode::get_legal_collide_
mask(void)const " (?get_legal_collide_mask@PandaNode@@UBE?AV?$BitMask@K$0CA@@@XZ
)
It looks like this class was not exported during the libpanda.dll build, but is being expected to be imported now.
I’m guessing maybe something to do with #define switches now are not the same as for the release build 1.0.3?
Currently I’m defining:
/MD /DWIN32_VC /DWIN32 /DFORCE_INLINING /DWITHIN_PANDA
The /DWIN32_VC seems absolutely essential; I think this triggers the EXPCL_xxx macros to do their thing. I was kindof hoping that adding the FORCE_INLINING would fix the BitMask issue, but no joy yet. WITHIN_PANDA doesnt seem to affect things either way, probably shouldnt be there, but it is defined in makepanda.py’s compilec function.
All Panda libraries and include files are those from the 1.0.3 release.
What do you think?
Hugh