Hi, Alex, Thanks for the feedback.
Regarding the name of the dll file, the name dll.dll might be derived from the VC Project's name. My guess is that Microsoft in its infinite wisdom has decided to make VS2010's project files not compatible with VS2008's profile files, and the conversion from VS2008 project files to VS2010 project files have messed up something. In the VS2008 project file dll.vcproj, the output file is defined to be fastbit.dll for both Debug build and Release build. As for the qualifier FASTBIT_CXX_DLLSPEC, I can understand that it is needed on the .h files you've mentioned. However, I am a little unsure about the needs for it in the .cpp files. OK, in column.cpp, there are some class variables (static members of ibis::column) that are to be exported. The functions whose prototype that only appears in utilidor.cpp are meant to be implementation details and not intended to be used by anything other than those functions defined in utilidor.h and implemented in utilidor.cpp. Are your programs making direct use of them? Is there a way for you to instruct SWIG not to export those functions? Thanks. John On 5/12/11 2:32 AM, Alexandre Maurel wrote: > Hello John, > > Thank you for the bug fix of 401 revision, I tried and it works for me. > > Here are some compilations issues. > > I wrap fastbit api with swig, and use smalltalk as the scripting langage. > > Fastbit is compiled as a dll, and is dynamicaly linked to stlport dll. > Swig wrapper is compiled as a dll and is dynamicaly linked to > fastbit.dll and stlport.dll. > > (Note : in the current Microsoft Visual C++ project, fastbit dll file > name is dll.dll, why not fastbit.dll ?) > > When linking swig wrapper dll to fastbit library, some symbols are > missing, below a list of files that I have modified by adding > FASTBIT_CXX_DLLSPEC in class declaration. > Note that in utilidor.cpp, templates of multiple functions must be exported. > > Now something else, would it be possible to add a getStarts() method > to ibis::bundle class to give access to the starts property ? > > Regards, > > Alex > > bitvector.h + bitvector + ibis::bitvector::indexSet > bord.h > column.cpp > dictionary.h > fileManager.h + fileManager + storage objects > fromClause.h > jnatural.h > qExpr.h > quaere.h > selectClause.h > utilidor.cpp > utilidor.h > whereClause.h > > > unresolved external symbol "public: int __thiscall > ibis::selectClause::parse(char const *)" > (?parse@selectClause@ibis@@QAEHPBD@Z) referenced in function "public: > void __thiscall mappingCube::setSelectClause(char const *)" > (?setSelectClause@mappingCube@@QAEXPBD@Z) > unresolved external symbol "public: __thiscall > ibis::selectClause::selectClause(class ibis::selectClause const&)" > (??0selectClause@ibis@@QAE@ABV01@@Z) referenced in function "public: > __thiscall mappingCube::mappingCube(class mappingCube const&)" > (??0mappingCube@@QAE@ABV0@@Z) > unresolved external symbol "public: __thiscall > ibis::selectClause::~selectClause(void)" > (??1selectClause@ibis@@QAE@XZ) referenced in function "public: class > ibis::selectClause& __thiscall ibis::selectClause::operator=(class > ibis::selectClause const&)" (??4selectClause@ibis@@QAEAAV01@ABV01@@Z) > unresolved external symbol "public: __thiscall > ibis::selectClause::selectClause(char const *)" > (??0selectClause@ibis@@QAE@PBD@Z) referenced in function "public: > __thiscall mappingCube::mappingCube(void)" (??0mappingCube@@QAE@XZ) > unresolved external symbol "public: class ibis::bitvector::indexSet& > __thiscall ibis::bitvector::indexSet::operator++(void)" > (??EindexSet@bitvector@ibis@@QAEAAV012@XZ) referenced in function > "public: virtual class ibis::bitvector * __thiscall > mappingCube::convertQTMaskToSourceMask(class ibis::bitvector const > &,class stlp_std::vector<class stlp_std::set<unsigned int,struct > stlp_std::less<unsigned int>,class stlp_std::allocator<unsigned int> > > *,class stlp_std::allocator<class stlp_std::set<unsigned int,struct > stlp_std::less<unsigned int>,class stlp_std::allocator<unsigned int> > > *> > const&,class stlp_std::vector<class stlp_std::set<unsigned > int,struct stlp_std::less<unsigned int>,class > stlp_std::allocator<unsigned int> > *,class stlp_std::allocator<class > stlp_std::set<unsigned int,struct stlp_std::less<unsigned int>,class > stlp_std::allocator<unsigned int> > *> > const&)" > (?convertQTMaskToSourceMask@mappingCube@@UAEPAVbitvector@ibis@@ABV23@ABV?$vector@PAV?$set@IU?$less@I@stlp_std@@V?$allocator@I@2@@stlp_std@@V?$allocator@PAV?$set@IU?$less@I@stlp_std@@V?$allocator@I@2@@stlp_std@@@2@@stlp_std@@1@Z) > unresolved external symbol "public: __thiscall ibis::bord::bord(char > const *,char const *,unsigned __int64,class ibis::array_t<void *> > &,class ibis::array_t<enum ibis::TYPE_T> const&,class > ibis::array_t<char const *> const&,class ibis::array_t<char const *> > const *)" > (??0bord@ibis@@QAE@PBD0_KAAV?$array_t@PAX@1@ABV?$array_t@W4TYPE_T@ibis@@@1@ABV?$array_t@PBD@1@PBV41@@Z) > referenced in function "public: static class ibis::table * __cdecl > mappingCube::selectOutlierTable(class ibis::bitvector const&,class > ibis::bitvector const&)" > (?selectOutlierTable@mappingCube@@SAPAVtable@ibis@@ABVbitvector@3@0@Z) > unresolved external symbol "public: __thiscall > ibis::selectClause::selectClause(class ibis::array_t<char const *> > const&)" (??0selectClause@ibis@@QAE@ABV?$array_t@PBD@1@@Z) referenced > in function "public: virtual class ibis::bundle * __thiscall > mappingCube::select(class ibis::array_t<unsigned int> const&,class > ibis::array_t<unsigned int> const&,class ibis::array_t<unsigned int> > const&,class stlp_std::vector<class stlp_std::set<unsigned int,struct > stlp_std::less<unsigned int>,class stlp_std::allocator<unsigned int> > > *,class stlp_std::allocator<class stlp_std::set<unsigned int,struct > stlp_std::less<unsigned int>,class stlp_std::allocator<unsigned int> > > *> > const&,class stlp_std::vector<class stlp_std::set<unsigned > int,struct stlp_std::less<unsigned int>,class > stlp_std::allocator<unsigned int> > *,class stlp_std::allocator<class > stlp_std::set<unsigned int,struct stlp_std::less<unsigned int>,class > stlp_std::allocator<unsigned int> > *> > const&,class ibis::bitvector > const&)" > (?select@mappingCube@@UAEPAVbundle@ibis@@ABV?$array_t@I@3@00ABV?$vector@PAV?$set@IU?$less@I@stlp_std@@V?$allocator@I@2@@stlp_std@@V?$allocator@PAV?$set@IU?$less@I@stlp_std@@V?$allocator@I@2@@stlp_std@@@2@@stlp_std@@1ABVbitvector@3@@Z) > unresolved external symbol "public: __thiscall > ibis::fileManager::storage::storage(unsigned int)" > (??0storage@fileManager@ibis@@QAE@I@Z) referenced in function "public: > void __thiscall ibis::array_t<char const *>::push_back(char const * > const&)" (?push_back@?$array_t@PBD@ibis@@QAEXABQBD@Z) > > unresolved external symbol "public: virtual void __thiscall > ibis::qExpr::print(class stlp_std::basic_ostream<char,class > stlp_std::char_traits<char> > &)const " > (?print@qExpr@ibis@@UBEXAAV?$basic_ostream@DV?$char_traits@D@stlp_std@@@stlp_std@@@Z) > unresolved external symbol "public: virtual void __thiscall > ibis::qExpr::printFull(class stlp_std::basic_ostream<char,class > stlp_std::char_traits<char> > &)const " > (?printFull@qExpr@ibis@@UBEXAAV?$basic_ostream@DV?$char_traits@D@stlp_std@@@stlp_std@@@Z) > unresolved external symbol "public: virtual void __thiscall > ibis::qExpr::getTableNames(class stlp_std::set<class > stlp_std::basic_string<char,class stlp_std::char_traits<char>,class > stlp_std::allocator<char> >,struct stlp_std::less<class > stlp_std::basic_string<char,class stlp_std::char_traits<char>,class > stlp_std::allocator<char> > >,class stlp_std::allocator<class > stlp_std::basic_string<char,class stlp_std::char_traits<char>,class > stlp_std::allocator<char> > > > &)const " > (?getTableNames@qExpr@ibis@@UBEXAAV?$set@V?$basic_string@DV?$char_traits@D@stlp_std@@V?$allocator@D@2@@stlp_std@@U?$less@V?$basic_string@DV?$char_traits@D@stlp_std@@V?$allocator@D@2@@stlp_std@@@2@V?$allocator@V?$basic_string@DV?$char_traits@D@stlp_std@@V?$allocator@D@2@@stlp_std@@@2@@stlp_std@@@Z) > unresolved external symbol "public: virtual void __thiscall > ibis::qDiscreteRange::print(class stlp_std::basic_ostream<char,class > stlp_std::char_traits<char> > &)const " > (?print@qDiscreteRange@ibis@@UBEXAAV?$basic_ostream@DV?$char_traits@D@stlp_std@@@stlp_std@@@Z) > unresolved external symbol "public: virtual void __thiscall > ibis::qRange::getTableNames(class stlp_std::set<class > stlp_std::basic_string<char,class stlp_std::char_traits<char>,class > stlp_std::allocator<char> >,struct stlp_std::less<class > stlp_std::basic_string<char,class stlp_std::char_traits<char>,class > stlp_std::allocator<char> > >,class stlp_std::allocator<class > stlp_std::basic_string<char,class stlp_std::char_traits<char>,class > stlp_std::allocator<char> > > > &)const " > (?getTableNames@qRange@ibis@@UBEXAAV?$set@V?$basic_string@DV?$char_traits@D@stlp_std@@V?$allocator@D@2@@stlp_std@@U?$less@V?$basic_string@DV?$char_traits@D@stlp_std@@V?$allocator@D@2@@stlp_std@@@2@V?$allocator@V?$basic_string@DV?$char_traits@D@stlp_std@@V?$allocator@D@2@@stlp_std@@@2@@stlp_std@@@Z) > unresolved external symbol "public: virtual void __thiscall > ibis::qDiscreteRange::restrictRange(double,double)" > (?restrictRange@qDiscreteRange@ibis@@UAEXNN@Z) > unresolved external symbol "public: __thiscall > ibis::qDiscreteRange::qDiscreteRange(char const *,char const *)" > (??0qDiscreteRange@ibis@@QAE@PBD0@Z) referenced in function > _fastbitNI_new_FBQDiscreteRange__SWIG_1 > unresolved external symbol "public: __thiscall > ibis::qDiscreteRange::qDiscreteRange(char const *,class > stlp_std::vector<unsigned int,class stlp_std::allocator<unsigned int> >> const&)" >> (??0qDiscreteRange@ibis@@QAE@PBDABV?$vector@IV?$allocator@I@stlp_std@@@stlp_std@@@Z) > referenced in function _fastbitNI_new_FBQDiscreteRange__SWIG_2 > unresolved external symbol "public: __thiscall > ibis::qDiscreteRange::qDiscreteRange(char const *,class > stlp_std::vector<double,class stlp_std::allocator<double> > const&)" > (??0qDiscreteRange@ibis@@QAE@PBDABV?$vector@NV?$allocator@N@stlp_std@@@stlp_std@@@Z) > referenced in function _fastbitNI_new_FBQDiscreteRange__SWIG_3 > unresolved external symbol "public: __thiscall > ibis::whereClause::whereClause(char const *)" > (??0whereClause@ibis@@QAE@PBD@Z) referenced in function > _fastbitNI_new_FBWhereClause__SWIG_0 > unresolved external symbol "public: __thiscall > ibis::whereClause::~whereClause(void)" (??1whereClause@ibis@@QAE@XZ) > referenced in function "public: void * __thiscall > ibis::whereClause::`scalar deleting destructor'(unsigned int)" > (??_GwhereClause@ibis@@QAEPAXI@Z) > unresolved external symbol "public: int __thiscall > ibis::whereClause::parse(char const *)" > (?parse@whereClause@ibis@@QAEHPBD@Z) referenced in function > _fastbitNI_FBWhereClause_parse > unresolved external symbol "public: __thiscall > ibis::fromClause::fromClause(char const *)" > (??0fromClause@ibis@@QAE@PBD@Z) referenced in function > _fastbitNI_new_FBFromClause__SWIG_0 > unresolved external symbol "public: __thiscall > ibis::fromClause::~fromClause(void)" (??1fromClause@ibis@@QAE@XZ) > referenced in function "public: void * __thiscall > ibis::fromClause::`scalar deleting destructor'(unsigned int)" > (??_GfromClause@ibis@@QAEPAXI@Z) > unresolved external symbol "public: int __thiscall > ibis::fromClause::parse(char const *)" > (?parse@fromClause@ibis@@QAEHPBD@Z) referenced in function > _fastbitNI_FBFromClause_parse > unresolved external symbol "public: static class ibis::quaere * > __cdecl ibis::quaere::create(char const *,char const *,char const *)" > (?create@quaere@ibis@@SAPAV12@PBD00@Z) referenced in function > _fastbitNI_FBQuaere_create__SWIG_0 > unresolved external symbol "public: static class ibis::quaere * > __cdecl ibis::quaere::create(class ibis::part const *,class ibis::part > const *,char const *,char const *,char const *,char const *)" > (?create@quaere@ibis@@SAPAV12@PBVpart@2@0PBD111@Z) referenced in > function _fastbitNI_FBQuaere_create__SWIG_1 > unresolved external symbol "public: __thiscall > ibis::jNatural::jNatural(class ibis::part const *,class ibis::part > const *,char const *,char const *,char const *,char const *)" > (??0jNatural@ibis@@QAE@PBVpart@1@0PBD111@Z) referenced in function > _fastbitNI_new_FBJNatural__SWIG_0 > unresolved external symbol "public: __thiscall > ibis::jNatural::jNatural(class ibis::part const *,class ibis::part > const *,class ibis::column const *,class ibis::column const *,class > ibis::qExpr const *,class ibis::qExpr const *,class ibis::selectClause > const *,class ibis::fromClause const *,char const *)" > (??0jNatural@ibis@@QAE@PBVpart@1@0PBVcolumn@1@1PBVqExpr@1@2PBVselectClause@1@PBVfromClause@1@PBD@Z) > referenced in function _fastbitNI_new_FBJNatural__SWIG_1 > unresolved external symbol "public: void __thiscall > ibis::dictionary::clear(void)" (?clear@dictionary@ibis@@QAEXXZ) > referenced in function "public: __thiscall > ibis::dictionary::~dictionary(void)" (??1dictionary@ibis@@QAE@XZ) > unresolved external symbol "public: unsigned int __thiscall > ibis::dictionary::insert(char const *)" > (?insert@dictionary@ibis@@QAEIPBD@Z) referenced in function > _fastbitNI_FBCategoryDictionary_insert > unresolved external symbol "public: int __thiscall > ibis::dictionary::read(char const *)" > (?read@dictionary@ibis@@QAEHPBD@Z) referenced in function > _fastbitNI_FBCategoryDictionary_read > unresolved external symbol "public: int __thiscall > ibis::dictionary::write(char const *)const " > (?write@dictionary@ibis@@QBEHPBD@Z) referenced in function > _fastbitNI_FBCategoryDictionary_write > unresolved external symbol "void __cdecl ibis::util::sortRIDs(class > ibis::array_t<union ibis::rid_t> &)" > (?sortRIDs@util@ibis@@YAXAAV?$array_t@Trid_t@ibis@@@2@@Z) referenced > in function _fastbitNI_sortRIDs > unresolved external symbol "void __cdecl ibis::util::sortRIDsq(class > ibis::array_t<union ibis::rid_t> &,unsigned int,unsigned int)" > (?sortRIDsq@util@ibis@@YAXAAV?$array_t@Trid_t@ibis@@@2@II@Z) > referenced in function _fastbitNI_sortRIDsq > unresolved external symbol "void __cdecl ibis::util::sortRIDsi(class > ibis::array_t<union ibis::rid_t> &,unsigned int,unsigned int)" > (?sortRIDsi@util@ibis@@YAXAAV?$array_t@Trid_t@ibis@@@2@II@Z) > referenced in function _fastbitNI_sortRIDsi > unresolved external symbol "__int64 __cdecl > ibis::util::sortMerge<double>(class ibis::array_t<double> &,class > ibis::array_t<unsigned int> &,class ibis::array_t<double> &,class > ibis::array_t<unsigned int> &)" > (??$sortMerge@N@util@ibis@@YA_JAAV?$array_t@N@1@AAV?$array_t@I@1@01@Z) > referenced in function _fastbitNI_sortMergeDouble > unresolved external symbol "__int64 __cdecl > ibis::util::sortMerge<unsigned int>(class ibis::array_t<unsigned int> > &,class ibis::array_t<unsigned int> &,class ibis::array_t<unsigned > int> &,class ibis::array_t<unsigned int> &)" > (??$sortMerge@I@util@ibis@@YA_JAAV?$array_t@I@1@000@Z) referenced in > function _fastbitNI_sortMergeUint32_t > unresolved external symbol "void __cdecl ibis::util::sortKeys<unsigned > int,unsigned int>(class ibis::array_t<unsigned int> &,class > ibis::array_t<unsigned int> &)" > (??$sortKeys@II@util@ibis@@YAXAAV?$array_t@I@1@0@Z) referenced in > function _fastbitNI_sortKeysUint32_tUint32_t > unresolved external symbol "void __cdecl > ibis::util::sortKeys<int,unsigned int>(class ibis::array_t<int> > &,class ibis::array_t<unsigned int> &)" > (??$sortKeys@HI@util@ibis@@YAXAAV?$array_t@H@1@AAV?$array_t@I@1@@Z) > referenced in function _fastbitNI_sortKeysInt32_tUint32_t > unresolved external symbol "void __cdecl ibis::util::sortKeys<unsigned > char,unsigned int>(class ibis::array_t<unsigned char> &,class > ibis::array_t<unsigned int> &)" > (??$sortKeys@EI@util@ibis@@YAXAAV?$array_t@E@1@AAV?$array_t@I@1@@Z) > referenced in function _fastbitNI_sortKeysUChar_tUint32_t > unresolved external symbol "void __cdecl > ibis::util::sortKeys<float,unsigned int>(class ibis::array_t<float> > &,class ibis::array_t<unsigned int> &)" > (??$sortKeys@MI@util@ibis@@YAXAAV?$array_t@M@1@AAV?$array_t@I@1@@Z) > referenced in function _fastbitNI_sortKeysFloatUint32_t > unresolved external symbol "void __cdecl > ibis::util::sortKeys<double,unsigned int>(class ibis::array_t<double> > &,class ibis::array_t<unsigned int> &)" > (??$sortKeys@NI@util@ibis@@YAXAAV?$array_t@N@1@AAV?$array_t@I@1@@Z) > referenced in function _fastbitNI_sortKeysDoubleUint32_t > _______________________________________________ > FastBit-users mailing list > [email protected] > https://hpcrdm.lbl.gov/cgi-bin/mailman/listinfo/fastbit-users _______________________________________________ FastBit-users mailing list [email protected] https://hpcrdm.lbl.gov/cgi-bin/mailman/listinfo/fastbit-users
