Comments (140)
That is right
from dataframe.
I am off the grid. Because of severe storms in our area we are without electricity
from dataframe.
Please let me know whenever you are ready to merge your branch into my master.
I can do a final walk through.
from dataframe.
OMG
I found it .. not sure why you even have this but even I also need to redefine add_definitions(-D DMS_INCLUDE_SOURCE)
this even outside the library to get all the required symbols. I thought we don't need that after building the shared lib in the first place.
- I am so happy I figured it out
- Why do you need that ? Everybody else will also need to define that!
- I never said I fixed the windows branch lol. I only fixed one issue, but I will finish that tomorrow!
💯 💯 💯 💯
from dataframe.
If its not, I would consider adding cmake support!
from dataframe.
The code should work in any environment. My make files are currently for Linux.
Cmake is very good suggestions.
I am trying to get people to contribute to this. Do you have time to add cmake?
from dataframe.
Yep..but gotta wait 22 or april that's when my exams are over!
from dataframe.
Fine with me
Thanks
from dataframe.
Right now building the source with the build script on my system errors out, I am using GCC 7.
Also I see you are using pthread
which is not available on Windows, consider using std::threads
from dataframe.
I just made a change. Can you pull again and build again?
If it doesn't work, look at files Makefile.Linux.GCC64
and Makefile.Linux.GCC64D
. Make sure the paths in there make sense for your system. I know it is archaic
from dataframe.
You can get rid of pthread
from dataframe.
unistd.h
is also for posix I think.
from dataframe.
Yeah, This is used for the mmap files in the Utils (DMScu) module. I don't think the mmap files interface in the windows is the same. So you can also get rid of the mmap files, in which case you have to take out the read and write csv file capability in DataFrame or reimplement it using regular files
from dataframe.
OK your change seems to fix the build issue, but running the testing binary looks for an absolute link and erros out
Testing read()
terminate called after throwing an instance of 'DMScu_Exception'
what(): DMScu_MMapFile::open(): ::open(): (2) No such file or directory --- /home/hossein/WindowsShare/Linux/src/DataSci/src/sample_data.csv
aborted (core dumped)
from dataframe.
what is the link?
from dataframe.
what(): DMScu_MMapFile::open(): ::open(): (2) No such file or directory --- /home/hossein/WindowsShare/Linux/src/DataSci/src/sample_data.csv
from dataframe.
ahh yeah.
in the test program adjust that hardcoded path to your path. the csv file is checked in in the src directory
from dataframe.
Instead of making it compatible for Windows, I will first make the CMakeScript that builds it correctly and then think about windows!. I need to know what is in DMScu
and what is in src
from dataframe.
makes sense
from dataframe.
In your source files you are including your header files like this #include <DMScu_FileBase.h>
, expecting them to be in usr/include
but cmake won;t copy the header files until the binary is built so I think we are supposed to use #include "DMScu_FileBase.h"
. Also from what I understand are the files in the source directory in root for testing ? and are the files in the DMScu
directory for the actual library ? If so how many targets are you expecting from all the source files in DataFrame/DMScu/src/
?
from dataframe.
For the test files how ever the library files should be already be available so we should able to include header files as if it where a library header. Also you have file-local-variables? Do you also use emacs ?
from dataframe.
In both DMScu and DataFrame the targets are:
Library
Test binary
Header files copy
DataFrame depends on successful build of DMScu
FYI, the DataFrame is mostly a header library with one .cc file required for the library
from dataframe.
Hi,
I wanted to touch base and see if you were able to progress, you need info?
from dataframe.
So from the DMScu directory, there will be 3 test binaries and 1 library ?
from dataframe.
OK, I am able to build DMScu after changing all system includes like
-#include <DMScu_Exception.h>
-#include <DMScu_FileDef.h>
+#include "DMScu_Exception.h"
+#include "DMScu_FileDef.h
I don;t even know how this was working out for you, may be your script copied the header files to the install path before building the library. But I am going to have to change all of these to relative paths in-order for them to built correctly, this is what I have seen and used everywhere.
from dataframe.
Ok as of now everything except the datasci_tester.cc
can be built and linked correctly. I will work in this a bit more tomorrow and figure out the problem.
from dataframe.
I have pushed current changes to my fork anyways
from dataframe.
Hoping you will do fine....I will iron out my scripts...by then.
from dataframe.
I have been playing with this for an hour now, any idea why linker is having these problems ?
CMakeFiles/datasci_tester.dir/src/datasci_tester.cc.o: In function `main':
datasci_tester.cc:(.text+0x332): undefined reference to `std::vector<int, std::allocator<int> >& hmdf::HeteroVector::get_vec<int, std::vector<int, std::allocator<int> > >()'
datasci_tester.cc:(.text+0x35c): undefined reference to `void hmdf::HeteroVector::push_back<int, std::vector<int, std::allocator<int> > >(int const&)'
datasci_tester.cc:(.text+0x37f): undefined reference to `void hmdf::HeteroVector::emplace_back<int, std::vector<int, std::allocator<int> >, int>(int&&)'
datasci_tester.cc:(.text+0x3a2): undefined reference to `void hmdf::HeteroVector::push_back<int, std::vector<int, std::allocator<int> > >(int const&)'
datasci_tester.cc:(.text+0x3d7): undefined reference to `void hmdf::HeteroVector::emplace<int, std::vector<int, std::allocator<int> >, int>(std::vector<int, std::allocator<int> >::const_iterator, int&&)'
datasci_tester.cc:(.text+0x3fa): undefined reference to `void hmdf::HeteroVector::push_back<int, std::vector<int, std::allocator<int> > >(int const&)'
datasci_tester.cc:(.text+0x41d): undefined reference to `void hmdf::HeteroVector::push_back<int, std::vector<int, std::allocator<int> > >(int const&)'
datasci_tester.cc:(.text+0x446): undefined reference to `void hmdf::HeteroVector::push_back<double, std::vector<double, std::allocator<double> > >(double const&)'
datasci_tester.cc:(.text+0x46f): undefined reference to `void hmdf::HeteroVector::push_back<double, std::vector<double, std::allocator<double> > >(double const&)'
datasci_tester.cc:(.text+0x498): undefined reference to `void hmdf::HeteroVector::push_back<double, std::vector<double, std::allocator<double> > >(double const&)'
datasci_tester.cc:(.text+0x4c1): undefined reference to `void hmdf::HeteroVector::push_back<double, std::vector<double, std::allocator<double> > >(double const&)'
datasci_tester.cc:(.text+0x4ea): undefined reference to `void hmdf::HeteroVector::push_back<double, std::vector<double, std::allocator<double> > >(double const&)'
CMakeFiles/datasci_tester.dir/src/datasci_tester.cc.o:datasci_tester.cc:(.text+0x513): more undefined references to `void hmdf::HeteroVector::push_back<double, std::vector<double, std::allocator<double> > >(double const&)' follow
CMakeFiles/datasci_tester.dir/src/datasci_tester.cc.o: In function `main':
datasci_tester.cc:(.text+0x559): undefined reference to `void hmdf::HeteroVector::push_back<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
datasci_tester.cc:(.text+0x5bd): undefined reference to `void hmdf::HeteroVector::push_back<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
datasci_tester.cc:(.text+0x621): undefined reference to `void hmdf::HeteroVector::push_back<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
datasci_tester.cc:(.text+0x685): undefined reference to `void hmdf::HeteroVector::push_back<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
datasci_tester.cc:(.text+0x6e9): undefined reference to `void hmdf::HeteroVector::push_back<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
datasci_tester.cc:(.text+0x753): undefined reference to `std::vector<double, std::allocator<double> >& hmdf::HeteroVector::get_vec<double, std::vector<double, std::allocator<double> > >()'
datasci_tester.cc:(.text+0xa1f): undefined reference to `void hmdf::HeteroVector::resize<int, std::vector<int, std::allocator<int> > >(std::vector<int, std::allocator<int> >::size_type, int const&)'
datasci_tester.cc:(.text+0xa2e): undefined reference to `void hmdf::HeteroVector::pop_back<int, std::vector<int, std::allocator<int> > >()'
datasci_tester.cc:(.text+0xa3d): undefined reference to `bool hmdf::HeteroVector::empty<int, std::vector<int, std::allocator<int> > >() const'
datasci_tester.cc:(.text+0xa51): undefined reference to `int& hmdf::HeteroVector::at<int, std::vector<int, std::allocator<int> > >(std::vector<int, std::allocator<int> >::size_type)'
datasci_tester.cc:(.text+0xa60): undefined reference to `int& hmdf::HeteroVector::back<int, std::vector<int, std::allocator<int> > >()'
datasci_tester.cc:(.text+0xa6f): undefined reference to `int& hmdf::HeteroVector::front<int, std::vector<int, std::allocator<int> > >()'
datasci_tester.cc:(.text+0xaae): undefined reference to `std::vector<int, std::allocator<int> >& hmdf::DataFrame<unsigned long, std::vector>::create_column<int>(char const*)'
datasci_tester.cc:(.text+0xee7): undefined reference to `unsigned long hmdf::DataFrame<unsigned long, std::vector>::load_data<std::pair<char const*, std::vector<int, std::allocator<int> > >, std::pair<char const*, std::vector<double, std::allocator<double> > >, std::pair<char const*, std::vector<double, std::allocator<double> > >, std::pair<char const*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, std::pair<char const*, std::vector<unsigned long, std::allocator<unsigned long> > > >(std::vector<unsigned long, std::allocator<unsigned long> >&&, std::pair<char const*, std::vector<int, std::allocator<int> > >, std::pair<char const*, std::vector<double, std::allocator<double> > >, std::pair<char const*, std::vector<double, std::allocator<double> > >, std::pair<char const*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, std::pair<char const*, std::vector<unsigned long, std::allocator<unsigned long> > >)'
datasci_tester.cc:(.text+0x103e): undefined reference to `unsigned long hmdf::DataFrame<unsigned long, std::vector>::load_index<__gnu_cxx::__normal_iterator<unsigned long*, std::vector<unsigned long, std::allocator<unsigned long> > > >(__gnu_cxx::__normal_iterator<unsigned long*, std::vector<unsigned long, std::allocator<unsigned long> > > const&, __gnu_cxx::__normal_iterator<unsigned long*, std::vector<unsigned long, std::allocator<unsigned long> > > const&)'
datasci_tester.cc:(.text+0x1095): undefined reference to `unsigned long hmdf::DataFrame<unsigned long, std::vector>::load_column<int, __gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > > >(char const*, __gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > > const&, __gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > > const&, bool)'
datasci_tester.cc:(.text+0x10ec): undefined reference to `unsigned long hmdf::DataFrame<unsigned long, std::vector>::load_column<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, __gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >(char const*, __gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&, __gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&, bool)'
datasci_tester.cc:(.text+0x1143): undefined reference to `unsigned long hmdf::DataFrame<unsigned long, std::vector>::load_column<double, __gnu_cxx::__normal_iterator<double*, std::vector<double, std::allocator<double> > > >(char const*, __gnu_cxx::__normal_iterator<double*, std::vector<double, std::allocator<double> > > const&, __gnu_cxx::__normal_iterator<double*, std::vector<double, std::allocator<double> > > const&, bool)'
datasci_tester.cc:(.text+0x119a): undefined reference to `unsigned long hmdf::DataFrame<unsigned long, std::vector>::load_column<double, __gnu_cxx::__normal_iterator<double*, std::vector<double, std::allocator<double> > > >(char const*, __gnu_cxx::__normal_iterator<double*, std::vector<double, std::allocator<double> > > const&, __gnu_cxx::__normal_iterator<double*, std::vector<double, std::allocator<double> > > const&, bool)'
datasci_tester.cc:(.text+0x11e4): undefined reference to `unsigned long hmdf::DataFrame<unsigned long, std::vector>::append_column<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)'
datasci_tester.cc:(.text+0x1232): undefined reference to `unsigned long hmdf::DataFrame<unsigned long, std::vector>::append_column<double>(char const*, double const&, bool)'
datasci_tester.cc:(.text+0x1246): undefined reference to `std::vector<int, std::allocator<int> >& hmdf::DataFrame<unsigned long, std::vector>::get_column<int>(char const*)'
datasci_tester.cc:(.text+0x1281): undefined reference to `std::vector<double, std::allocator<double> >& hmdf::DataFrame<unsigned long, std::vector>::get_column<double>(char const*)'
datasci_tester.cc:(.text+0x130e): undefined reference to `hmdf::MeanVisitor<int, unsigned long>& hmdf::DataFrame<unsigned long, std::vector>::visit<int, hmdf::MeanVisitor<int, unsigned long> >(char const*, hmdf::MeanVisitor<int, unsigned long>&) const'
datasci_tester.cc:(.text+0x135a): undefined reference to `hmdf::MeanVisitor<double, unsigned long>& hmdf::DataFrame<unsigned long, std::vector>::visit<double, hmdf::MeanVisitor<double, unsigned long> >(char const*, hmdf::MeanVisitor<double, unsigned long>&) const'
datasci_tester.cc:(.text+0x138b): undefined reference to `std::vector<double, std::allocator<double> >& hmdf::DataFrame<unsigned long, std::vector>::get_column<double>(char const*)'
datasci_tester.cc:(.text+0x13b8): undefined reference to `std::vector<double, std::allocator<double> >& hmdf::DataFrame<unsigned long, std::vector>::get_column<double>(char const*)'
datasci_tester.cc:(.text+0x13e5): undefined reference to `std::vector<double, std::allocator<double> >& hmdf::DataFrame<unsigned long, std::vector>::get_column<double>(char const*)'
datasci_tester.cc:(.text+0x143a): undefined reference to `hmdf::MeanVisitor<double, unsigned long>& hmdf::DataFrame<unsigned long, std::vector>::visit<double, hmdf::MeanVisitor<double, unsigned long> >(char const*, hmdf::MeanVisitor<double, unsigned long>&) const'
datasci_tester.cc:(.text+0x1470): undefined reference to `bool hmdf::DataFrame<unsigned long, std::vector>::write<std::ostream, int, unsigned long, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::ostream&, bool) const'
datasci_tester.cc:(.text+0x14a0): undefined reference to `std::vector<double, std::allocator<double> >& hmdf::DataFrame<unsigned long, std::vector>::get_column<double>(char const*)'
datasci_tester.cc:(.text+0x14c9): undefined reference to `std::vector<double, std::allocator<double> >& hmdf::DataFrame<unsigned long, std::vector>::get_column<double>(char const*)'
datasci_tester.cc:(.text+0x166b): undefined reference to `void hmdf::DataFrame<unsigned long, std::vector>::make_consistent<int, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >()'
datasci_tester.cc:(.text+0x169b): undefined reference to `std::vector<double, std::allocator<double> >& hmdf::DataFrame<unsigned long, std::vector>::get_column<double>(char const*)'
datasci_tester.cc:(.text+0x16c4): undefined reference to `std::vector<double, std::allocator<double> >& hmdf::DataFrame<unsigned long, std::vector>::get_column<double>(char const*)'
datasci_tester.cc:(.text+0x186b): undefined reference to `void hmdf::DataFrame<unsigned long, std::vector>::sort<unsigned long, int, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(char const*)'
datasci_tester.cc:(.text+0x189b): undefined reference to `std::vector<double, std::allocator<double> >& hmdf::DataFrame<unsigned long, std::vector>::get_column<double>(char const*)'
datasci_tester.cc:(.text+0x18c4): undefined reference to `std::vector<double, std::allocator<double> >& hmdf::DataFrame<unsigned long, std::vector>::get_column<double>(char const*)'
datasci_tester.cc:(.text+0x1a6b): undefined reference to `void hmdf::DataFrame<unsigned long, std::vector>::sort<double, int, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(char const*)'
datasci_tester.cc:(.text+0x1a9b): undefined reference to `std::vector<double, std::allocator<double> >& hmdf::DataFrame<unsigned long, std::vector>::get_column<double>(char const*)'
datasci_tester.cc:(.text+0x1ac4): undefined reference to `std::vector<double, std::allocator<double> >& hmdf::DataFrame<unsigned long, std::vector>::get_column<double>(char const*)'
datasci_tester.cc:(.text+0x1c77): undefined reference to `hmdf::DataFrame<unsigned long, std::vector> hmdf::DataFrame<unsigned long, std::vector>::get_data_by_idx<int, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(unsigned long, unsigned long) const'
datasci_tester.cc:(.text+0x1ca7): undefined reference to `std::vector<double, std::allocator<double> >& hmdf::DataFrame<unsigned long, std::vector>::get_column<double>(char const*)'
datasci_tester.cc:(.text+0x1cd0): undefined reference to `std::vector<double, std::allocator<double> >& hmdf::DataFrame<unsigned long, std::vector>::get_column<double>(char const*)'
datasci_tester.cc:(.text+0x1e83): undefined reference to `hmdf::DataFrame<unsigned long, std::vector> hmdf::DataFrame<unsigned long, std::vector>::get_data_by_loc<int, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(unsigned long, unsigned long) const'
datasci_tester.cc:(.text+0x1eb3): undefined reference to `std::vector<double, std::allocator<double> >& hmdf::DataFrame<unsigned long, std::vector>::get_column<double>(char const*)'
datasci_tester.cc:(.text+0x1edc): undefined reference to `std::vector<double, std::allocator<double> >& hmdf::DataFrame<unsigned long, std::vector>::get_column<double>(char const*)'
datasci_tester.cc:(.text+0x20b5): undefined reference to `hmdf::CorrVisitor<double, unsigned long, double>& hmdf::DataFrame<unsigned long, std::vector>::visit<double, double, hmdf::CorrVisitor<double, unsigned long, double>&>(char const*, char const*, hmdf::CorrVisitor<double, unsigned long, double>&) const'
datasci_tester.cc:(.text+0x2128): undefined reference to `hmdf::StatsVisitor<double, unsigned long, double>& hmdf::DataFrame<unsigned long, std::vector>::visit<double, hmdf::StatsVisitor<double, unsigned long, double> >(char const*, hmdf::StatsVisitor<double, unsigned long, double>&) const'
datasci_tester.cc:(.text+0x214b): undefined reference to `std::vector<double, std::allocator<double> >& hmdf::DataFrame<unsigned long, std::vector>::get_column<double>(char const*)'
datasci_tester.cc:(.text+0x234d): undefined reference to `hmdf::SLRegressionVisitor<double, unsigned long, double>& hmdf::DataFrame<unsigned long, std::vector>::visit<double, double, hmdf::SLRegressionVisitor<double, unsigned long, double>&>(char const*, char const*, hmdf::SLRegressionVisitor<double, unsigned long, double>&) const'
datasci_tester.cc:(.text+0x2469): undefined reference to `hmdf::CorrVisitor<double, unsigned long, double>& hmdf::DataFrame<unsigned long, std::vector>::visit<double, double, hmdf::CorrVisitor<double, unsigned long, double>&>(char const*, char const*, hmdf::CorrVisitor<double, unsigned long, double>&) const'
datasci_tester.cc:(.text+0x2f12): undefined reference to `unsigned long hmdf::DataFrame<unsigned long, std::vector>::load_data<std::pair<char const*, std::vector<int, std::allocator<int> > >, std::pair<char const*, std::vector<double, std::allocator<double> > >, std::pair<char const*, std::vector<double, std::allocator<double> > >, std::pair<char const*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, std::pair<char const*, std::vector<unsigned long, std::allocator<unsigned long> > > >(std::vector<unsigned long, std::allocator<unsigned long> >&&, std::pair<char const*, std::vector<int, std::allocator<int> > >, std::pair<char const*, std::vector<double, std::allocator<double> > >, std::pair<char const*, std::vector<double, std::allocator<double> > >, std::pair<char const*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, std::pair<char const*, std::vector<unsigned long, std::allocator<unsigned long> > >)'
datasci_tester.cc:(.text+0x2f7a): undefined reference to `bool hmdf::DataFrame<unsigned long, std::vector>::write<std::ostream, int, unsigned long, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::ostream&, bool) const'
datasci_tester.cc:(.text+0x3009): undefined reference to `hmdf::DataFrame<unsigned long, std::vector> hmdf::DataFrame<unsigned long, std::vector>::groupby<hmdf::GroupbySum, unsigned long, int, unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, double>(hmdf::GroupbySum&&, char const*, bool) const'
datasci_tester.cc:(.text+0x3031): undefined reference to `bool hmdf::DataFrame<unsigned long, std::vector>::write<std::ostream, int, unsigned long, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::ostream&, bool) const'
datasci_tester.cc:(.text+0x30c0): undefined reference to `hmdf::DataFrame<unsigned long, std::vector> hmdf::DataFrame<unsigned long, std::vector>::groupby<hmdf::GroupbySum, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, double>(hmdf::GroupbySum&&, char const*, bool) const'
datasci_tester.cc:(.text+0x30e8): undefined reference to `bool hmdf::DataFrame<unsigned long, std::vector>::write<std::ostream, int, unsigned long, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::ostream&, bool) const'
datasci_tester.cc:(.text+0x3177): undefined reference to `std::future<hmdf::DataFrame<unsigned long, std::vector> > hmdf::DataFrame<unsigned long, std::vector>::groupby_async<hmdf::GroupbySum, double, int, unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, double>(hmdf::GroupbySum&&, char const*, bool) const'
datasci_tester.cc:(.text+0x31b8): undefined reference to `bool hmdf::DataFrame<unsigned long, std::vector>::write<std::ostream, int, unsigned long, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::ostream&, bool) const'
datasci_tester.cc:(.text+0x31f4): undefined reference to `std::future<bool> hmdf::DataFrame<unsigned long, std::vector>::write_async<std::ostream, int, unsigned long, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::ostream&, bool) const'
datasci_tester.cc:(.text+0x323d): undefined reference to `std::future<void> hmdf::DataFrame<unsigned long, std::vector>::sort_async<double, int, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(char const*)'
datasci_tester.cc:(.text+0x3265): undefined reference to `bool hmdf::DataFrame<unsigned long, std::vector>::write<std::ostream, int, unsigned long, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::ostream&, bool) const'
datasci_tester.cc:(.text+0x32fb): undefined reference to `std::future<hmdf::DataFrame<unsigned long, std::vector> > hmdf::DataFrame<unsigned long, std::vector>::bucketize_async<hmdf::GroupbySum, int, unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, double>(hmdf::GroupbySum&&, unsigned long const&) const'
datasci_tester.cc:(.text+0x333c): undefined reference to `bool hmdf::DataFrame<unsigned long, std::vector>::write<std::ostream, int, unsigned long, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::ostream&, bool) const'
datasci_tester.cc:(.text+0x3385): undefined reference to `hmdf::DataFrame<unsigned long, std::vector>::read_async(char const*)'
datasci_tester.cc:(.text+0x33ad): undefined reference to `bool hmdf::DataFrame<unsigned long, std::vector>::write<std::ostream, int, unsigned long, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::ostream&, bool) const'
datasci_tester.cc:(.text+0x3501): undefined reference to `void hmdf::DataFrame<unsigned long, std::vector>::multi_visit<std::pair<char const*, hmdf::MeanVisitor<int, unsigned long>*>, std::pair<char const*, hmdf::MeanVisitor<double, unsigned long>*>, std::pair<char const*, hmdf::MeanVisitor<double, unsigned long>*>, std::pair<char const*, hmdf::MeanVisitor<unsigned long, unsigned long>*> >(std::pair<char const*, hmdf::MeanVisitor<int, unsigned long>*>, std::pair<char const*, hmdf::MeanVisitor<double, unsigned long>*>, std::pair<char const*, hmdf::MeanVisitor<double, unsigned long>*>, std::pair<char const*, hmdf::MeanVisitor<unsigned long, unsigned long>*>) const'
datasci_tester.cc:(.text+0x3642): undefined reference to `bool hmdf::DataFrame<unsigned long, std::vector>::is_equal<int, unsigned long, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(hmdf::DataFrame<unsigned long, std::vector> const&) const'
datasci_tester.cc:(.text+0x3687): undefined reference to `bool hmdf::DataFrame<unsigned long, std::vector>::is_equal<int, unsigned long, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(hmdf::DataFrame<unsigned long, std::vector> const&) const'
datasci_tester.cc:(.text+0x36b5): undefined reference to `std::vector<double, std::allocator<double> >& hmdf::DataFrame<unsigned long, std::vector>::get_column<double>(char const*)'
datasci_tester.cc:(.text+0x36f4): undefined reference to `std::vector<double, std::allocator<double> >& hmdf::DataFrame<unsigned long, std::vector>::get_column<double>(char const*)'
datasci_tester.cc:(.text+0x373f): undefined reference to `std::vector<double, std::allocator<double> >& hmdf::DataFrame<unsigned long, std::vector>::get_column<double>(char const*)'
datasci_tester.cc:(.text+0x379e): undefined reference to `bool hmdf::DataFrame<unsigned long, std::vector>::is_equal<int, unsigned long, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(hmdf::DataFrame<unsigned long, std::vector> const&) const'
datasci_tester.cc:(.text+0x37ed): undefined reference to `bool hmdf::DataFrame<unsigned long, std::vector>::write<std::ostream, int, unsigned long, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::ostream&, bool) const'
datasci_tester.cc:(.text+0x380b): undefined reference to `hmdf::DataFrame<unsigned long, std::vector>& hmdf::DataFrame<unsigned long, std::vector>::modify_by_idx<int, unsigned long, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(hmdf::DataFrame<unsigned long, std::vector>&, bool)'
datasci_tester.cc:(.text+0x3840): undefined reference to `bool hmdf::DataFrame<unsigned long, std::vector>::write<std::ostream, int, unsigned long, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::ostream&, bool) const'
datasci_tester.cc:(.text+0x385e): undefined reference to `hmdf::DataFrame<unsigned long, std::vector>& hmdf::DataFrame<unsigned long, std::vector>::modify_by_idx<int, unsigned long, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(hmdf::DataFrame<unsigned long, std::vector>&, bool)'
datasci_tester.cc:(.text+0x3893): undefined reference to `bool hmdf::DataFrame<unsigned long, std::vector>::write<std::ostream, int, unsigned long, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::ostream&, bool) const'
CMakeFiles/datasci_tester.dir/src/datasci_tester.cc.o: In function `void hmdf::HeteroVector::visit<my_visitor>(my_visitor&&)':
datasci_tester.cc:(.text._ZN4hmdf12HeteroVector5visitI10my_visitorEEvOT_[_ZN4hmdf12HeteroVector5visitI10my_visitorEEvOT_]+0x33): undefined reference to `void hmdf::HeteroVector::visit_impl_<my_visitor&, hmdf::HeteroVector::type_list, int, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(my_visitor&, hmdf::HeteroVector::type_list<int, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >)'
CMakeFiles/datasci_tester.dir/src/datasci_tester.cc.o: In function `void hmdf::HeteroVector::sort<sort_functor>(sort_functor&&)':
datasci_tester.cc:(.text._ZN4hmdf12HeteroVector4sortI12sort_functorEEvOT_[_ZN4hmdf12HeteroVector4sortI12sort_functorEEvOT_]+0x33): undefined reference to `void hmdf::HeteroVector::sort_impl_<sort_functor&, hmdf::HeteroVector::type_list, int, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(sort_functor&, hmdf::HeteroVector::type_list<int, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >)'
CMakeFiles/datasci_tester.dir/src/datasci_tester.cc.o: In function `void hmdf::HeteroVector::change<change_functor>(change_functor&&)':
datasci_tester.cc:(.text._ZN4hmdf12HeteroVector6changeI14change_functorEEvOT_[_ZN4hmdf12HeteroVector6changeI14change_functorEEvOT_]+0x33): undefined reference to `void hmdf::HeteroVector::change_impl_<change_functor&, hmdf::HeteroVector::type_list, int, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(change_functor&, hmdf::HeteroVector::type_list<int, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >)'
collect2: error: ld returned 1 exit status
CMakeFiles/datasci_tester.dir/build.make:96: recipe for target 'datasci_tester' failed
make[2]: *** [datasci_tester] Error 1
CMakeFiles/Makefile2:68: recipe for target 'CMakeFiles/datasci_tester.dir/all' failed
make[1]: *** [CMakeFiles/datasci_tester.dir/all] Error 2
Makefile:129: recipe for target 'all' failed
make: *** [all] Error 2
Compilation exited abnormally with code 2 at Wed May 16 20:57:10
Its only these one testing binary that is having the problem....I am linking DMScu and Dataframe to it.
from dataframe.
There is a ‘https://github.com/hosseinmoein/DataFrame/blob/master/src/BaseContainer.cc’ file that you have to make into a library and put it on the link line of the executable
from dataframe.
You can look at my make file
from dataframe.
I am doing that..these lines in my CMakeLists.txt should do that
# Build the test binary
add_executable(datasci_tester src/datasci_tester.cc)
# Link the Dataframe library to the test binary
target_link_libraries(datasci_tester Dataframe DMScu)
from dataframe.
Sorry, I should have told you this in the beginning. In your cmake file, you have to define DMS_INCLUDE_SOURCE
. This will include all the .tcc
files in the compilation. All the undefined symbols are defined in the .tcc
files that are included at the bottom of DataFrame.h
from dataframe.
Ok..great that works now...but I had to change things like this
modified include/DataFrame.h
@@ -637,12 +637,12 @@ private:
// ----------------------------------------------------------------------------
# ifdef DMS_INCLUDE_SOURCE
-# include <DataFrame_misc.tcc>
-# include <DataFrame_set.tcc>
-# include <DataFrame_get.tcc>
-# include <DataFrame_read.tcc>
-# include <DataFrame_opt.tcc>
-# include <DataFrame.tcc>
+# include "DataFrame_misc.tcc"
+# include "DataFrame_set.tcc"
+# include "DataFrame_get.tcc"
+# include "DataFrame_read.tcc"
+# include "DataFrame_opt.tcc"
+# include "DataFrame.tcc"
# endif // DMS_INCLUDE_SOURCE
I'm not sure how your make files were to find this, the only reason I can come up with is that you were copying all header files before building the binaries, anyways after changing paths to relative ones..This one looks really bad too.
modified include/DataFrame_read.tcc
@@ -4,7 +4,7 @@
// Distributed under the BSD Software License (see file License)
#include "DataFrame.h"
-#include <DMScu_MMapFile.h>
+#include "../DMScu/include/DMScu_MMapFile.h"
#include <cstdlib>
// ----------------------------------------------------------------------------
It got stuck in an other problem saying it could not find pthreads
..(linker complained). So after adding that too. Everything works now.
cmake --build /home/justin/Desktop/Repos/DataFrame/build/
[ 28%] Built target DMScu
[ 42%] Built target Dataframe
[ 57%] Built target datasci_tester
[ 71%] Built target filebase_tester
[ 85%] Built target fixsizestr_tester
[100%] Built target mmfile_tester
But I remember you said you were not actually using pthreads
... you can't find them on windows..so you might wanna port the usage to std::threads
?
Also, another thing is the paths of the test data files seems to be hardcoded, so you need to change that too. I can write something in cmake to copy the data files to the directory where the binary is built too ?
from dataframe.
I have to look. but as far as I remember. I do not use pthread. I use std:thread through std:future in DataFrame, I am not sure where pthread is coming from. You could do a grep -R for pthread.
Now that everything builds and runs, you could start on Window port?
from dataframe.
from dataframe.
The MMap files also have to change. Basically most of the stuff that comes from DMScu,
You could basically #ifdef for Windows and just use regular files.
We are making great progress though.
from dataframe.
Weird, I can't seem to find , I cant seem to find any lines that uses pthread but disabling pthread in cmake produces this
-*- mode: compilation; default-directory: "~/Desktop/Repos/DataFrame/" -*-
Compilation started at Mon May 21 20:08:55
cmake --build /home/justin/Desktop/Repos/DataFrame/build/
-- -- Configuring DMscu module
-- -- Configuring DMscu module - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/justin/Desktop/Repos/DataFrame/build
[ 28%] Built target DMScu
[ 35%] Building CXX object CMakeFiles/Dataframe.dir/src/BaseContainer.cc.o
[ 42%] Linking CXX shared library libDataframe.so
[ 42%] Built target Dataframe
[ 50%] Building CXX object CMakeFiles/datasci_tester.dir/src/datasci_tester.cc.o
[ 57%] Linking CXX executable datasci_tester
CMakeFiles/datasci_tester.dir/src/datasci_tester.cc.o: In function `std::thread::thread<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<hmdf::DataFrame<unsigned long, std::vector> (hmdf::DataFrame<unsigned long, std::vector>::*)(hmdf::GroupbySum&&, char const*, bool) const, hmdf::DataFrame<unsigned long, std::vector> const*, hmdf::GroupbySum, char const*, bool> >, hmdf::DataFrame<unsigned long, std::vector> >::_Async_state_impl(std::thread::_Invoker<std::tuple<hmdf::DataFrame<unsigned long, std::vector> (hmdf::DataFrame<unsigned long, std::vector>::*)(hmdf::GroupbySum&&, char const*, bool) const, hmdf::DataFrame<unsigned long, std::vector> const*, hmdf::GroupbySum, char const*, bool> >&&)::{lambda()#1}>(std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<hmdf::DataFrame<unsigned long, std::vector> (hmdf::DataFrame<unsigned long, std::vector>::*)(hmdf::GroupbySum&&, char const*, bool) const, hmdf::DataFrame<unsigned long, std::vector> const*, hmdf::GroupbySum, char const*, bool> >, hmdf::DataFrame<unsigned long, std::vector> >::_Async_state_impl(std::thread::_Invoker<std::tuple<hmdf::DataFrame<unsigned long, std::vector> (hmdf::DataFrame<unsigned long, std::vector>::*)(hmdf::GroupbySum&&, char const*, bool) const, hmdf::DataFrame<unsigned long, std::vector> const*, hmdf::GroupbySum, char const*, bool> >&&)::{lambda()#1}&&)':
datasci_tester.cc:(.text._ZNSt6threadC2IZNSt13__future_base17_Async_state_implINS_8_InvokerISt5tupleIJMN4hmdf9DataFrameImSt6vectorEEKFS8_ONS5_10GroupbySumEPKcbEPKS8_S9_SC_bEEEES8_EC4EOSI_EUlvE_JEEEOT_DpOT0_[_ZNSt6threadC5IZNSt13__future_base17_Async_state_implINS_8_InvokerISt5tupleIJMN4hmdf9DataFrameImSt6vectorEEKFS8_ONS5_10GroupbySumEPKcbEPKS8_S9_SC_bEEEES8_EC4EOSI_EUlvE_JEEEOT_DpOT0_]+0x30): undefined reference to `pthread_create'
CMakeFiles/datasci_tester.dir/src/datasci_tester.cc.o: In function `std::thread::thread<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<bool (hmdf::DataFrame<unsigned long, std::vector>::*)(std::ostream&, bool) const, hmdf::DataFrame<unsigned long, std::vector> const*, std::ostream&, bool> >, bool>::_Async_state_impl(std::thread::_Invoker<std::tuple<bool (hmdf::DataFrame<unsigned long, std::vector>::*)(std::ostream&, bool) const, hmdf::DataFrame<unsigned long, std::vector> const*, std::ostream&, bool> >&&)::{lambda()#1}>(std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<bool (hmdf::DataFrame<unsigned long, std::vector>::*)(std::ostream&, bool) const, hmdf::DataFrame<unsigned long, std::vector> const*, std::ostream&, bool> >, bool>::_Async_state_impl(std::thread::_Invoker<std::tuple<bool (hmdf::DataFrame<unsigned long, std::vector>::*)(std::ostream&, bool) const, hmdf::DataFrame<unsigned long, std::vector> const*, std::ostream&, bool> >&&)::{lambda()#1}&&)':
datasci_tester.cc:(.text._ZNSt6threadC2IZNSt13__future_base17_Async_state_implINS_8_InvokerISt5tupleIJMN4hmdf9DataFrameImSt6vectorEEKFbRSobEPKS8_S9_bEEEEbEC4EOSF_EUlvE_JEEEOT_DpOT0_[_ZNSt6threadC5IZNSt13__future_base17_Async_state_implINS_8_InvokerISt5tupleIJMN4hmdf9DataFrameImSt6vectorEEKFbRSobEPKS8_S9_bEEEEbEC4EOSF_EUlvE_JEEEOT_DpOT0_]+0x30): undefined reference to `pthread_create'
CMakeFiles/datasci_tester.dir/src/datasci_tester.cc.o: In function `std::thread::thread<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<void (hmdf::DataFrame<unsigned long, std::vector>::*)(char const*), hmdf::DataFrame<unsigned long, std::vector>*, char const*> >, void>::_Async_state_impl(std::thread::_Invoker<std::tuple<void (hmdf::DataFrame<unsigned long, std::vector>::*)(char const*), hmdf::DataFrame<unsigned long, std::vector>*, char const*> >&&)::{lambda()#1}>(std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<void (hmdf::DataFrame<unsigned long, std::vector>::*)(char const*), hmdf::DataFrame<unsigned long, std::vector>*, char const*> >, void>::_Async_state_impl(std::thread::_Invoker<std::tuple<void (hmdf::DataFrame<unsigned long, std::vector>::*)(char const*), hmdf::DataFrame<unsigned long, std::vector>*, char const*> >&&)::{lambda()#1}&&)':
datasci_tester.cc:(.text._ZNSt6threadC2IZNSt13__future_base17_Async_state_implINS_8_InvokerISt5tupleIJMN4hmdf9DataFrameImSt6vectorEEFvPKcEPS8_SA_EEEEvEC4EOSF_EUlvE_JEEEOT_DpOT0_[_ZNSt6threadC5IZNSt13__future_base17_Async_state_implINS_8_InvokerISt5tupleIJMN4hmdf9DataFrameImSt6vectorEEFvPKcEPS8_SA_EEEEvEC4EOSF_EUlvE_JEEEOT_DpOT0_]+0x30): undefined reference to `pthread_create'
CMakeFiles/datasci_tester.dir/src/datasci_tester.cc.o: In function `std::thread::thread<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<hmdf::DataFrame<unsigned long, std::vector> (hmdf::DataFrame<unsigned long, std::vector>::*)(hmdf::GroupbySum&&, unsigned long const&) const, hmdf::DataFrame<unsigned long, std::vector> const*, hmdf::GroupbySum, unsigned long const&> >, hmdf::DataFrame<unsigned long, std::vector> >::_Async_state_impl(std::thread::_Invoker<std::tuple<hmdf::DataFrame<unsigned long, std::vector> (hmdf::DataFrame<unsigned long, std::vector>::*)(hmdf::GroupbySum&&, unsigned long const&) const, hmdf::DataFrame<unsigned long, std::vector> const*, hmdf::GroupbySum, unsigned long const&> >&&)::{lambda()#1}>(std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<hmdf::DataFrame<unsigned long, std::vector> (hmdf::DataFrame<unsigned long, std::vector>::*)(hmdf::GroupbySum&&, unsigned long const&) const, hmdf::DataFrame<unsigned long, std::vector> const*, hmdf::GroupbySum, unsigned long const&> >, hmdf::DataFrame<unsigned long, std::vector> >::_Async_state_impl(std::thread::_Invoker<std::tuple<hmdf::DataFrame<unsigned long, std::vector> (hmdf::DataFrame<unsigned long, std::vector>::*)(hmdf::GroupbySum&&, unsigned long const&) const, hmdf::DataFrame<unsigned long, std::vector> const*, hmdf::GroupbySum, unsigned long const&> >&&)::{lambda()#1}&&)':
datasci_tester.cc:(.text._ZNSt6threadC2IZNSt13__future_base17_Async_state_implINS_8_InvokerISt5tupleIJMN4hmdf9DataFrameImSt6vectorEEKFS8_ONS5_10GroupbySumERKmEPKS8_S9_SC_EEEES8_EC4EOSI_EUlvE_JEEEOT_DpOT0_[_ZNSt6threadC5IZNSt13__future_base17_Async_state_implINS_8_InvokerISt5tupleIJMN4hmdf9DataFrameImSt6vectorEEKFS8_ONS5_10GroupbySumERKmEPKS8_S9_SC_EEEES8_EC4EOSI_EUlvE_JEEEOT_DpOT0_]+0x30): undefined reference to `pthread_create'
CMakeFiles/datasci_tester.dir/src/datasci_tester.cc.o: In function `std::thread::thread<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<bool (hmdf::DataFrame<unsigned long, std::vector>::*)(char const*), hmdf::DataFrame<unsigned long, std::vector>*, char const*> >, bool>::_Async_state_impl(std::thread::_Invoker<std::tuple<bool (hmdf::DataFrame<unsigned long, std::vector>::*)(char const*), hmdf::DataFrame<unsigned long, std::vector>*, char const*> >&&)::{lambda()#1}>(std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<bool (hmdf::DataFrame<unsigned long, std::vector>::*)(char const*), hmdf::DataFrame<unsigned long, std::vector>*, char const*> >, bool>::_Async_state_impl(std::thread::_Invoker<std::tuple<bool (hmdf::DataFrame<unsigned long, std::vector>::*)(char const*), hmdf::DataFrame<unsigned long, std::vector>*, char const*> >&&)::{lambda()#1}&&)':
datasci_tester.cc:(.text._ZNSt6threadC2IZNSt13__future_base17_Async_state_implINS_8_InvokerISt5tupleIJMN4hmdf9DataFrameImSt6vectorEEFbPKcEPS8_SA_EEEEbEC4EOSF_EUlvE_JEEEOT_DpOT0_[_ZNSt6threadC5IZNSt13__future_base17_Async_state_implINS_8_InvokerISt5tupleIJMN4hmdf9DataFrameImSt6vectorEEFbPKcEPS8_SA_EEEEbEC4EOSF_EUlvE_JEEEOT_DpOT0_]+0x30): undefined reference to `pthread_create'
collect2: error: ld returned 1 exit status
CMakeFiles/datasci_tester.dir/build.make:96: recipe for target 'datasci_tester' failed
make[2]: *** [datasci_tester] Error 1
CMakeFiles/Makefile2:68: recipe for target 'CMakeFiles/datasci_tester.dir/all' failed
make[1]: *** [CMakeFiles/datasci_tester.dir/all] Error 2
Makefile:129: recipe for target 'all' failed
make: *** [all] Error 2
Compilation exited abnormally with code 2 at Mon May 21 20:09:01
Mainly undefined reference to pthread_create
in datasci_tester.cc
from dataframe.
So its only that tester binary that needs pthreads, not Data frame itslef
from dataframe.
I didn't get your comment in the MMap files, why they should be changed for windows ?
from dataframe.
It might be that std::thread is using pthread on Linux in gcc compiler. Do I include any pthread header files even though I don’t use it??
Re/ mmap files; I don’t think windows has mmap interface like Linux
from dataframe.
from dataframe.
I realised that some of the paths that I am making relative does not make sense once I move them to the global include dir, so I reverted them...but added a line in cmake that still enables them to find them.
Other thing is I have a question, do I move all the tcc files to the global include dir as well when installing?
from dataframe.
As of now this is what the install directory will look like if I use ../install
as the prefix for installation.
drwxrwxr-x 8 justin 4k 05-23 20:13 ..
drwxr-xr-x 2 justin 4k 05-23 20:13 include
drwxrwxr-x 2 justin 4k 05-23 20:13 lib
This is what include looks like
drwxrwxr-x 4 justin 4k 05-23 20:13 ..
-rw-r--r-- 1 justin 5.3k 05-21 16:55 BaseContainer.h
-rw-r--r-- 1 justin 7.6k 05-23 19:58 BaseContainer.tcc
-rw-r--r-- 1 justin 12.0k 05-23 19:55 DFVisitors.h
-rw-r--r-- 1 justin 2.1k 04-26 09:52 DMScu_Exception.h
-rw-r--r-- 1 justin 24.1k 05-14 21:39 DMScu_FileBase.h
-rw-r--r-- 1 justin 4.1k 05-14 21:39 DMScu_FileDef.h
-rw-r--r-- 1 justin 11.0k 04-26 09:52 DMScu_FixedSizeString.h
-rw-r--r-- 1 justin 22.3k 05-14 21:45 DMScu_MMapBase.h
-rw-r--r-- 1 justin 1.4k 05-14 21:40 DMScu_MMapFile.h
-rw-r--r-- 1 justin 23k 05-23 19:54 DataFrame.h
-rw-r--r-- 1 justin 10.7k 05-23 19:54 DataFrame.tcc
-rw-r--r-- 1 justin 13.4k 05-23 19:54 DataFrame_get.tcc
-rw-r--r-- 1 justin 8.3k 05-23 19:54 DataFrame_misc.tcc
-rw-r--r-- 1 justin 2.3k 05-23 19:54 DataFrame_opt.tcc
-rw-r--r-- 1 justin 5.7k 05-23 19:52 DataFrame_read.tcc
-rw-r--r-- 1 justin 9k 05-23 19:54 DataFrame_set.tcc
This is what lib will look like
drwxrwxr-x 4 justin 4k 05-23 20:13 ..
-rw-r--r-- 1 justin 53k 05-23 20:01 libDMScu.so
-rw-r--r-- 1 justin 150.3k 05-23 20:01 libDataframe.so
from dataframe.
Yes, .tcc files always go wherever the header files go
from dataframe.
from dataframe.
Ohhppp...couple of problems already can't find #include <unistd.h>
nor #include <sys/fcntl.h>
.. I know unistd.h
is only available on unix for a fact.
These are on the mmap files too like you mentioned the other day, do I disable them on windows? if so which files need to be disabled ?
from dataframe.
Yeah, I think you will run into more problems in windows. I believe all problems will only be in DMScu and only related to mmap files.
You have to use #ifdef to separate windows from Linux.
If the problems get too complicated, you could exclude mmap files entirely in windows and just use regular files. To do that you have to use #ifdef in DataFrame in the Read and write methods
from dataframe.
In the src dir, there is problems with this DMScu_FileBase.cc
file as well (can't find unistd.h
), other 2 files are MMap files does that mean the whole DMScu module won't work on windows?
from dataframe.
I think with the exception of fixed length string, you will have windows problems with other files in DMScu.
I am saying if the problems are too complicated to solve, you can exclude those in windows. Then you have to modify the DataFrame code where it reads/writes files to use regular windows files. There are only two function in DataFrame that needs adjusting.
I know that Windows has mmap files but with very different interface. The more challenging route would be to modify the mmap files in DMScu with #ifdef's to work for both Linux and windows.
from dataframe.
Well, I don't think I can modify the DMScu files honestly, I'm a little busy to learn MMap to implement the windows API for it, so I will try to modify the Data Frame code and build file to not depends on DMScu on windows.
I am creating a branch for making these changes for windows alone, by the way..test cases won't complete because the binary is looking for hardlinked files that belong to your system. I can(if you want) move the test files into a separate directory(DataFrame/test) and move them to the build directory while making cmake(generating the build files)
Also I can add a easy .travis.yml
file for CI, linux and may be even mac ?
from dataframe.
sounds good to all
from dataframe.
I did the moving files and changes all the links, this binary mmfile_tester
never exits..I have not made any changes to the.cc
file.
from dataframe.
mmfile_tester.cc
should not be included in Windows build.
from dataframe.
@hosseinmoein No, I mean when I run the mmfile_tester
test binary on linux, it never exits ? Or does it take lot of time ?
from dataframe.
It had hard-coded path in it. I commented out those in my repository. Get my latest commit
from dataframe.
Ok, so I have setup all the compilers I can in here:
https://travis-ci.org/justinjk007/DataFrame/builds/388574138
even older gcc versions don't support C++14 anyways... checkout these once they are finished building.
At home I have gcc-7 which seems to be working with the current code. So the errors are not regression definitely.
I will squash all these dirty commits at the end btw.
from dataframe.
Ok, looks very good thanks,
A few comments:
- You probably want to add a new file to include directory that include constructs such as gcc_likely, etc. for Linux and Windows equivalent if it exists.
- You also still have to modify the DataFrame read() and write() to use regular files in case of Windows.
- When you merge everything into your master let me know. At some point I will merge all your changes, when complete, into my master
from dataframe.
@hosseinmoein Look at these errors when testing on windows :
https://ci.appveyor.com/project/justinjk007/dataframe/build/2
I don;t understand the cause of these ?
This the same above error, just color coded
from dataframe.
in file datasci_tester.cc at line 32; for Windows:
replace
void operator() (auto &val) {
with
template<typename T>
void operator() (T &val) {
in file DataFrame.h at line 483; here I am not sure. try replacing DataFrame::size_type
with size_type
from dataframe.
You also still have to modify the DataFrame read() and write() to use regular files in case of Windows.
I have started on read()
, but is write()
depeneded on DMScu ? From the looks of it seems to be writing from the Dataframe buffer ?
The above fix seems to fix that error, I'm not sure about what the others are either but right now I will finish writing my read function and then come back to this.
from dataframe.
You are right about write()
. It is fine as is.
So the error at DataFrame.h at line 483
wasn't fixed? hmm wonder what the issue is. will look again.
from dataframe.
No line 483 is not fixed yet.
from dataframe.
On line 483, can you change
DataFrame::size_type
to size_t
If that doesn't fix it, I think size
might be a keyword in MS compiler. You have to change that to something like my_size
. And then you have to change the source code where it refers to size
from dataframe.
Hey, how are you doing? Do you have any blockers?
from dataframe.
from dataframe.
Hmmm...I thought I had my method correct but the parsed data seems to be slightly off, try to compile the source from here https://github.com/justinjk007/DataFrame/tree/windows it works on linux
@hosseinmoein do you have any suggestions ?
Here is a diff of the output
--- /Users/justin/Repos/DataFrame/build/test_my_funtion.txt 2018-06-20 18:40:59.000000000 -0400
+++ /Users/justin/Repos/DataFrame/build/test_orginal.txt 2018-06-20 18:42:10.000000000 -0400
@@ -208,11 +208,11 @@
Testing read()
INDEX:123432,123433,123434,123435,123436,123441,123442,123448,123449,123450,123450,123450,123450,123450,123451,123451,123452,123452,123452,123453,123454,123455,123455,123456,123457,123458,123459,123460,
-4.3333:<double>:0.87865,-0.6999,0.4111,0.1902,-0.4888,0.2,0.1056,0.1,0.06743,0.998,0.15678,0.923,0.0111,-0.8888,0.3456,0.0056,0.056,0.07865,-0.9999,0.0456,0.14,0.00345,0.1002,0.078654,-0.8999,0.01119,0.8002,-0.9888,
-30:<string>:XXXX10,XXXX11,XXXX01,XXXX02,XXXX03,XXXX6,XXXX7,Running fast,$15 increase,4% of something,3.4% of GDP,Market pulls back,Bonds vs. Equities,Here comes the sun,Description 4/5,C++14 development,This is bad,Some explanation,More strings,XXXX04,XXXX1,Market drops,Almost done,XXXX2,XXXX3,XXXX4,XXXX4,XXXX5,
-123436:<int>:35,36,40,45,46,33,34,8,7,1,4,6,12,14,2,9,3,10,11,20,15,5,13,22,23,24,25,30,
-XXXX5:<double>:2.009,3.111,10,4.2222,5.3333,12,6.25,10,0.9999,1.2345,4.2345,3,8,3.3333,2.2345,4.25,3.2345,0.009,1.111,5.25,11,5.2345,2.2222,1.009,2.111,9,3.2222,4.3333,
-123460:<ulong>:123450,123451,123452,123450,123455,123450,123449,123448,123451,123452,123452,123450,123455,123450,123454,123453,123456,123457,123458,123459,123460,123441,123442,123432,123433,123434,123435,123436,
+dbl_col:<double>:2.009,3.111,10,4.2222,5.3333,12,6.25,10,0.9999,1.2345,4.2345,3,8,3.3333,2.2345,4.25,3.2345,0.009,1.111,5.25,11,5.2345,2.2222,1.009,2.111,9,3.2222,4.3333,
+dbl_col_2:<double>:0.87865,-0.6999,0.4111,0.1902,-0.4888,0.2,0.1056,0.1,0.06743,0.998,0.15678,0.923,0.0111,-0.8888,0.3456,0.0056,0.056,0.07865,-0.9999,0.0456,0.14,0.00345,0.1002,0.078654,-0.8999,0.01119,0.8002,-0.9888,
+str_col:<string>:XXXX10,XXXX11,XXXX01,XXXX02,XXXX03,XXXX6,XXXX7,Running fast,$15 increase,4% of something,3.4% of GDP,Market pulls back,Bonds vs. Equities,Here comes the sun,Description 4/5,C++14 development,This is bad,Some explanation,More strings,XXXX04,XXXX1,Market drops,Almost done,XXXX2,XXXX3,XXXX4,XXXX4,XXXX5,
+xint_col:<int>:35,36,40,45,46,33,34,8,7,1,4,6,12,14,2,9,3,10,11,20,15,5,13,22,23,24,25,30,
+ul_col:<ulong>:123450,123451,123452,123450,123455,123450,123449,123448,123451,123452,123452,123450,123455,123450,123454,123453,123456,123457,123458,123459,123460,123441,123442,123432,123433,123434,123435,123436,
Testing multi_visit()
Diff finished. Wed Jun 20 18:53:15 2018
from dataframe.
You clearly have some offset problem. Nothing in your code stands out as error to me. But I don't have access to Windows compiler and environment so it is hard for me to debug it.
Can you use a debugger and step through it? If you don't have a debugger, put cout
prints in the code at the right places and print variables, etc. to see what is going on.
If this is going to take a long time, you could make read() function to throw a NotImplemented
exception in Windows for now. I would like to integrate the cmake
sooner than later
from dataframe.
Like I said current commit in the windows branch can be ran on linux as well, I have commented out your original method there so it can be ran on linux as well.
About Cmake, current configs on the linux branch already does what your shell scripts do. But for other cmake developers to use it I need to Export the targets. Which I think I am doing right but I cannot find Dataframe from other cmake project even after installing it. Which I am looking into.
from dataframe.
Sounds good
from dataframe.
Update: Current commit of the master branch in my repo exports all targets correctly. And copies the files to these locations by default installation . But on my mac, I can't build a test binary that is outside of our project directory, but it finds our package
These are the copy logs
/usr/local/lib/libDataframe.dylib
/usr/local/include/DFVisitors.h
/usr/local/include/BaseContainer.h
/usr/local/include/DataFrame.h
/usr/local/include/DataFrame_opt.tcc
/usr/local/include/DataFrame_read.tcc
/usr/local/include/BaseContainer.tcc
/usr/local/include/DataFrame.tcc
/usr/local/include/DataFrame_set.tcc
/usr/local/include/DataFrame_misc.tcc
/usr/local/include/DataFrame_get.tcc
/usr/local/lib/cmake/Dataframe/DataframeConfig.cmake
/usr/local/lib/cmake/Dataframe/DataframeConfigVersion.cmake
/usr/local/lib/cmake/Dataframe/Dataframe-targets.cmake
/usr/local/lib/cmake/Dataframe/Dataframe-targets-noconfig.cmake
/usr/local/lib/libDMScu.dylib
/usr/local/include/DMScu_MMapBase.h
/usr/local/include/DMScu_FixedSizeString.h
/usr/local/include/DMScu_FileBase.h
/usr/local/include/DMScu_MMapFile.h
/usr/local/include/DMScu_Exception.h
/usr/local/include/DMScu_FileDef.h
/usr/local/lib/cmake/DMScu/DMScuConfig.cmake
/usr/local/lib/cmake/DMScu/DMScuConfigVersion.cmake
/usr/local/lib/cmake/DMScu/DMScu-targets.cmake
/usr/local/lib/cmake/DMScu/DMScu-targets-noconfig.cmake
This is the error I am getting. I will look more into this tomorrow but test it out in my linux system later today from home.
"hmdf::MeanVisitor<int, unsigned long>& hmdf::DataFrame<unsigned long, std::__1::vector>::visit<int, hmdf::MeanVisitor<int, unsigned long> >(char const*, hmdf::MeanVisitor<int, unsigned long>&) const", referenced from:
_main in datasci_tester.cc.o
"bool hmdf::DataFrame<unsigned long, std::__1::vector>::write<std::__1::basic_ostream<char, std::__1::char_traits<char> >, int, unsigned long, double, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, bool) const", referenced from:
_main in datasci_tester.cc.o
"hmdf::DataFrame<unsigned long, std::__1::vector> hmdf::DataFrame<unsigned long, std::__1::vector>::groupby<hmdf::GroupbySum, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int, unsigned long, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, double>(hmdf::GroupbySum&&, char const*, bool) const", referenced from:
_main in datasci_tester.cc.o
"hmdf::DataFrame<unsigned long, std::__1::vector> hmdf::DataFrame<unsigned long, std::__1::vector>::groupby<hmdf::GroupbySum, unsigned long, int, unsigned long, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, double>(hmdf::GroupbySum&&, char const*, bool) const", referenced from:
_main in datasci_tester.cc.o
"bool hmdf::DataFrame<unsigned long, std::__1::vector>::is_equal<int, unsigned long, double, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(hmdf::DataFrame<unsigned long, std::__1::vector> const&) const", referenced from:
_main in datasci_tester.cc.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [datasci_tester] Error 1
make[1]: *** [CMakeFiles/datasci_tester.dir/all] Error 2
make: *** [all] Error 2
from dataframe.
Very good progress
I will look at your error messages in more details maybe tomorrow. I am currently on vacation. I will try to find WiFi
from dataframe.
Wait. Just looked closer in my phone. It seems you have difficulty including the file DFVisitors.h
.
MeanVisitor
is defined in DFVisitors.h
.
I am surprised you have problems with Mac. It should be very similar to Linux. But the fact you are done with Windows is good news
from dataframe.
Its not because of header files, then the preprocessor should complaint. Its got something to do with the shared library file. .so
or .dylib
on mac. It's not because of cmake I think.
I have never written a library so I'm not sure..but aren't we supposed to make changes in the main header file so the symbols are properly exported ?
After installing both the libraries I also try to build the test files you use on DMScu as an external project and that goes fine. But doing the same with datasci_tester.cc
as an external project won't work.
This : https://gcc.gnu.org/wiki/Visibility ?
Actually does linking an external project work when build with the original makefiles ?
from dataframe.
Your unresolved symbols are all in the header file. That is why I don’t think it is a library thing
from dataframe.
DFVisitors.h
is installed /usr/local/include/DFVisitors.h
from dataframe.
This is the whole output by the way
-*- mode: compilation; default-directory: "~/Repos/Dataframe_tester/" -*-
Compilation started at Thu Jun 28 18:20:44
cmake --build /Users/justin.kaipada\@ibm.com/Repos/Dataframe_tester/build/
[ 50%] Linking CXX executable datasci_tester
Undefined symbols for architecture x86_64:
"void hmdf::HeteroVector::sort_impl_<sort_functor&, hmdf::HeteroVector::type_list, int, double, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(sort_functor&&&, hmdf::HeteroVector::type_list<int, double, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >)", referenced from:
void hmdf::HeteroVector::sort<sort_functor>(sort_functor&&) in datasci_tester.cc.o
"void hmdf::HeteroVector::visit_impl_<my_visitor&, hmdf::HeteroVector::type_list, int, double, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(my_visitor&&&, hmdf::HeteroVector::type_list<int, double, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >)", referenced from:
void hmdf::HeteroVector::visit<my_visitor>(my_visitor&&) in datasci_tester.cc.o
"void hmdf::HeteroVector::change_impl_<change_functor&, hmdf::HeteroVector::type_list, int, double, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(change_functor&&&, hmdf::HeteroVector::type_list<int, double, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >)", referenced from:
void hmdf::HeteroVector::change<change_functor>(change_functor&&) in datasci_tester.cc.o
"void hmdf::HeteroVector::emplace_back<int, std::__1::vector<int, std::__1::allocator<int> >, int>(int&&)", referenced from:
_main in datasci_tester.cc.o
"int& hmdf::HeteroVector::at<int, std::__1::vector<int, std::__1::allocator<int> > >(std::__1::vector<int, std::__1::allocator<int> >::size_type)", referenced from:
_main in datasci_tester.cc.o
"int& hmdf::HeteroVector::back<int, std::__1::vector<int, std::__1::allocator<int> > >()", referenced from:
_main in datasci_tester.cc.o
"int& hmdf::HeteroVector::front<int, std::__1::vector<int, std::__1::allocator<int> > >()", referenced from:
_main in datasci_tester.cc.o
"void hmdf::HeteroVector::resize<int, std::__1::vector<int, std::__1::allocator<int> > >(std::__1::vector<int, std::__1::allocator<int> >::size_type, int const&)", referenced from:
_main in datasci_tester.cc.o
"void hmdf::HeteroVector::emplace<int, std::__1::vector<int, std::__1::allocator<int> >, int>(std::__1::vector<int, std::__1::allocator<int> >::const_iterator, int&&)", referenced from:
_main in datasci_tester.cc.o
"std::__1::vector<double, std::__1::allocator<double> >& hmdf::HeteroVector::get_vec<double, std::__1::vector<double, std::__1::allocator<double> > >()", referenced from:
_main in datasci_tester.cc.o
"std::__1::vector<int, std::__1::allocator<int> >& hmdf::HeteroVector::get_vec<int, std::__1::vector<int, std::__1::allocator<int> > >()", referenced from:
_main in datasci_tester.cc.o
"void hmdf::HeteroVector::pop_back<int, std::__1::vector<int, std::__1::allocator<int> > >()", referenced from:
_main in datasci_tester.cc.o
"void hmdf::HeteroVector::push_back<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from:
_main in datasci_tester.cc.o
"void hmdf::HeteroVector::push_back<double, std::__1::vector<double, std::__1::allocator<double> > >(double const&)", referenced from:
_main in datasci_tester.cc.o
"void hmdf::HeteroVector::push_back<int, std::__1::vector<int, std::__1::allocator<int> > >(int const&)", referenced from:
_main in datasci_tester.cc.o
"std::__1::vector<double, std::__1::allocator<double> >& hmdf::DataFrame<unsigned long, std::__1::vector>::get_column<double>(char const*)", referenced from:
_main in datasci_tester.cc.o
"std::__1::vector<int, std::__1::allocator<int> >& hmdf::DataFrame<unsigned long, std::__1::vector>::get_column<int>(char const*)", referenced from:
_main in datasci_tester.cc.o
"unsigned long hmdf::DataFrame<unsigned long, std::__1::vector>::load_index<std::__1::__wrap_iter<unsigned long*> >(std::__1::__wrap_iter<unsigned long*> const&, std::__1::__wrap_iter<unsigned long*> const&)", referenced from:
_main in datasci_tester.cc.o
"hmdf::DataFrame<unsigned long, std::__1::vector>::read_async(char const*)", referenced from:
_main in datasci_tester.cc.o
"std::__1::future<void> hmdf::DataFrame<unsigned long, std::__1::vector>::sort_async<double, int, double, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(char const*)", referenced from:
_main in datasci_tester.cc.o
"unsigned long hmdf::DataFrame<unsigned long, std::__1::vector>::load_column<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__wrap_iter<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*> >(char const*, std::__1::__wrap_iter<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*> const&, std::__1::__wrap_iter<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*> const&, bool)", referenced from:
_main in datasci_tester.cc.o
"unsigned long hmdf::DataFrame<unsigned long, std::__1::vector>::load_column<double, std::__1::__wrap_iter<double*> >(char const*, std::__1::__wrap_iter<double*> const&, std::__1::__wrap_iter<double*> const&, bool)", referenced from:
_main in datasci_tester.cc.o
"unsigned long hmdf::DataFrame<unsigned long, std::__1::vector>::load_column<int, std::__1::__wrap_iter<int*> >(char const*, std::__1::__wrap_iter<int*> const&, std::__1::__wrap_iter<int*> const&, bool)", referenced from:
_main in datasci_tester.cc.o
"unsigned long hmdf::DataFrame<unsigned long, std::__1::vector>::append_column<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool)", referenced from:
_main in datasci_tester.cc.o
"unsigned long hmdf::DataFrame<unsigned long, std::__1::vector>::append_column<double>(char const*, double const&, bool)", referenced from:
_main in datasci_tester.cc.o
"std::__1::vector<int, std::__1::allocator<int> >& hmdf::DataFrame<unsigned long, std::__1::vector>::create_column<int>(char const*)", referenced from:
_main in datasci_tester.cc.o
"hmdf::DataFrame<unsigned long, std::__1::vector>& hmdf::DataFrame<unsigned long, std::__1::vector>::modify_by_idx<int, unsigned long, double, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(hmdf::DataFrame<unsigned long, std::__1::vector>&, bool)", referenced from:
_main in datasci_tester.cc.o
"void hmdf::DataFrame<unsigned long, std::__1::vector>::make_consistent<int, double, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >()", referenced from:
_main in datasci_tester.cc.o
"void hmdf::DataFrame<unsigned long, std::__1::vector>::sort<double, int, double, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(char const*)", referenced from:
_main in datasci_tester.cc.o
"void hmdf::DataFrame<unsigned long, std::__1::vector>::sort<unsigned long, int, double, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(char const*)", referenced from:
_main in datasci_tester.cc.o
"unsigned long hmdf::DataFrame<unsigned long, std::__1::vector>::load_data<std::__1::pair<char const*, std::__1::vector<int, std::__1::allocator<int> > >, std::__1::pair<char const*, std::__1::vector<double, std::__1::allocator<double> > >, std::__1::pair<char const*, std::__1::vector<double, std::__1::allocator<double> > >, std::__1::pair<char const*, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > >, std::__1::pair<char const*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> > > >(std::__1::vector<unsigned long, std::__1::allocator<unsigned long> >&&, std::__1::pair<char const*, std::__1::vector<int, std::__1::allocator<int> > >, std::__1::pair<char const*, std::__1::vector<double, std::__1::allocator<double> > >, std::__1::pair<char const*, std::__1::vector<double, std::__1::allocator<double> > >, std::__1::pair<char const*, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > >, std::__1::pair<char const*, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> > >)", referenced from:
_main in datasci_tester.cc.o
"bool hmdf::HeteroVector::empty<int, std::__1::vector<int, std::__1::allocator<int> > >() const", referenced from:
_main in datasci_tester.cc.o
"void hmdf::DataFrame<unsigned long, std::__1::vector>::multi_visit<std::__1::pair<char const*, hmdf::MeanVisitor<int, unsigned long>*>, std::__1::pair<char const*, hmdf::MeanVisitor<double, unsigned long>*>, std::__1::pair<char const*, hmdf::MeanVisitor<double, unsigned long>*>, std::__1::pair<char const*, hmdf::MeanVisitor<unsigned long, unsigned long>*> >(std::__1::pair<char const*, hmdf::MeanVisitor<int, unsigned long>*>, std::__1::pair<char const*, hmdf::MeanVisitor<double, unsigned long>*>, std::__1::pair<char const*, hmdf::MeanVisitor<double, unsigned long>*>, std::__1::pair<char const*, hmdf::MeanVisitor<unsigned long, unsigned long>*>) const", referenced from:
_main in datasci_tester.cc.o
"std::__1::future<bool> hmdf::DataFrame<unsigned long, std::__1::vector>::write_async<std::__1::basic_ostream<char, std::__1::char_traits<char> >, int, unsigned long, double, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, bool) const", referenced from:
_main in datasci_tester.cc.o
"std::__1::future<hmdf::DataFrame<unsigned long, std::__1::vector> > hmdf::DataFrame<unsigned long, std::__1::vector>::groupby_async<hmdf::GroupbySum, double, int, unsigned long, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, double>(hmdf::GroupbySum&&, char const*, bool) const", referenced from:
_main in datasci_tester.cc.o
"std::__1::future<hmdf::DataFrame<unsigned long, std::__1::vector> > hmdf::DataFrame<unsigned long, std::__1::vector>::bucketize_async<hmdf::GroupbySum, int, unsigned long, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, double>(hmdf::GroupbySum&&, unsigned long const&) const", referenced from:
_main in datasci_tester.cc.o
"hmdf::DataFrame<unsigned long, std::__1::vector> hmdf::DataFrame<unsigned long, std::__1::vector>::get_data_by_idx<int, double, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(unsigned long, unsigned long) const", referenced from:
_main in datasci_tester.cc.o
"hmdf::DataFrame<unsigned long, std::__1::vector> hmdf::DataFrame<unsigned long, std::__1::vector>::get_data_by_loc<int, double, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(unsigned long, unsigned long) const", referenced from:
_main in datasci_tester.cc.o
"hmdf::MeanVisitor<double, unsigned long>& hmdf::DataFrame<unsigned long, std::__1::vector>::visit<double, hmdf::MeanVisitor<double, unsigned long> >(char const*, hmdf::MeanVisitor<double, unsigned long>&) const", referenced from:
_main in datasci_tester.cc.o
"hmdf::StatsVisitor<double, unsigned long, double>& hmdf::DataFrame<unsigned long, std::__1::vector>::visit<double, hmdf::StatsVisitor<double, unsigned long, double> >(char const*, hmdf::StatsVisitor<double, unsigned long, double>&) const", referenced from:
_main in datasci_tester.cc.o
"hmdf::CorrVisitor<double, unsigned long, double>&&& hmdf::DataFrame<unsigned long, std::__1::vector>::visit<double, double, hmdf::CorrVisitor<double, unsigned long, double>&>(char const*, char const*, hmdf::CorrVisitor<double, unsigned long, double>&&&) const", referenced from:
_main in datasci_tester.cc.o
"hmdf::SLRegressionVisitor<double, unsigned long, double>&&& hmdf::DataFrame<unsigned long, std::__1::vector>::visit<double, double, hmdf::SLRegressionVisitor<double, unsigned long, double>&>(char const*, char const*, hmdf::SLRegressionVisitor<double, unsigned long, double>&&&) const", referenced from:
_main in datasci_tester.cc.o
"hmdf::MeanVisitor<int, unsigned long>& hmdf::DataFrame<unsigned long, std::__1::vector>::visit<int, hmdf::MeanVisitor<int, unsigned long> >(char const*, hmdf::MeanVisitor<int, unsigned long>&) const", referenced from:
_main in datasci_tester.cc.o
"bool hmdf::DataFrame<unsigned long, std::__1::vector>::write<std::__1::basic_ostream<char, std::__1::char_traits<char> >, int, unsigned long, double, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, bool) const", referenced from:
_main in datasci_tester.cc.o
"hmdf::DataFrame<unsigned long, std::__1::vector> hmdf::DataFrame<unsigned long, std::__1::vector>::groupby<hmdf::GroupbySum, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int, unsigned long, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, double>(hmdf::GroupbySum&&, char const*, bool) const", referenced from:
_main in datasci_tester.cc.o
"hmdf::DataFrame<unsigned long, std::__1::vector> hmdf::DataFrame<unsigned long, std::__1::vector>::groupby<hmdf::GroupbySum, unsigned long, int, unsigned long, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, double>(hmdf::GroupbySum&&, char const*, bool) const", referenced from:
_main in datasci_tester.cc.o
"bool hmdf::DataFrame<unsigned long, std::__1::vector>::is_equal<int, unsigned long, double, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(hmdf::DataFrame<unsigned long, std::__1::vector> const&) const", referenced from:
_main in datasci_tester.cc.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [datasci_tester] Error 1
make[1]: *** [CMakeFiles/datasci_tester.dir/all] Error 2
make: *** [all] Error 2
Compilation exited abnormally with code 2 at Thu Jun 28 18:20:44
This is the nm -C
output
$ nm -C libDataframe.dylib
000000000000a9cc s GCC_except_table0
000000000000a9ec s GCC_except_table1
000000000000aa90 s GCC_except_table11
000000000000aa18 s GCC_except_table2
000000000000aa44 s GCC_except_table3
000000000000aab0 s GCC_except_table34
000000000000aadc s GCC_except_table36
000000000000aaf4 s GCC_except_table42
000000000000ab20 s GCC_except_table44
000000000000ab38 s GCC_except_table50
000000000000ab64 s GCC_except_table52
000000000000ab7c s GCC_except_table58
000000000000aba8 s GCC_except_table61
000000000000ac54 s GCC_except_table67
000000000000ac80 s GCC_except_table70
000000000000ad2c s GCC_except_table76
000000000000ad58 s GCC_except_table79
000000000000aa70 s GCC_except_table8
U __Unwind_Resume
0000000000002d70 T hmdf::HeteroVector::clear()
0000000000002d40 T hmdf::HeteroVector::HeteroVector(hmdf::HeteroVector&&)
0000000000002a20 T hmdf::HeteroVector::HeteroVector(hmdf::HeteroVector const&)
0000000000002350 T hmdf::HeteroVector::HeteroVector()
0000000000002a50 T hmdf::HeteroVector::HeteroVector(hmdf::HeteroVector&&)
0000000000002370 T hmdf::HeteroVector::HeteroVector(hmdf::HeteroVector const&)
0000000000001c20 T hmdf::HeteroVector::HeteroVector()
0000000000002ff0 T hmdf::HeteroVector::operator=(hmdf::HeteroVector&&)
0000000000002660 T hmdf::HeteroVector::operator=(hmdf::HeteroVector const&)
U std::__1::__vector_base_common<true>::__throw_length_error() const
0000000000008a00 T std::__1::vector<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)> > >::max_size() const
00000000000071f0 T std::__1::vector<std::__1::function<void (hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector&)> > >::max_size() const
000000000000a210 T std::__1::vector<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)> > >::max_size() const
0000000000002f30 T std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>::operator()(hmdf::HeteroVector const&, hmdf::HeteroVector&) const
0000000000003380 T std::__1::function<void (hmdf::HeteroVector&)>::operator()(hmdf::HeteroVector&) const
00000000000032c0 T std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)>::operator()(hmdf::HeteroVector&, hmdf::HeteroVector&) const
U std::exception::what() const
U std::logic_error::logic_error(char const*)
U std::length_error::~length_error()
0000000000003440 t std::__1::__vector_base<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)> > >::~__vector_base()
0000000000003440 t std::__1::__vector_base<std::__1::function<void (hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector&)> > >::~__vector_base()
0000000000003440 t std::__1::__vector_base<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)> > >::~__vector_base()
0000000000004440 t std::__1::__split_buffer<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)> >&>::__split_buffer(unsigned long, unsigned long, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)> >&)
0000000000004b70 t std::__1::__split_buffer<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)> >&>::__split_buffer(unsigned long, unsigned long, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)> >&)
0000000000003df0 t std::__1::__split_buffer<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)> >&>::~__split_buffer()
0000000000004230 t std::__1::__split_buffer<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)> >&>::~__split_buffer()
00000000000036c0 t std::__1::__split_buffer<std::__1::function<void (hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector&)> >&>::__split_buffer(unsigned long, unsigned long, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector&)> >&)
0000000000003e10 t std::__1::__split_buffer<std::__1::function<void (hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector&)> >&>::__split_buffer(unsigned long, unsigned long, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector&)> >&)
0000000000003df0 t std::__1::__split_buffer<std::__1::function<void (hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector&)> >&>::~__split_buffer()
0000000000004230 t std::__1::__split_buffer<std::__1::function<void (hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector&)> >&>::~__split_buffer()
0000000000004f90 t std::__1::__split_buffer<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)> >&>::__split_buffer(unsigned long, unsigned long, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)> >&)
00000000000056c0 t std::__1::__split_buffer<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)> >&>::__split_buffer(unsigned long, unsigned long, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)> >&)
0000000000003df0 t std::__1::__split_buffer<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)> >&>::~__split_buffer()
0000000000004230 t std::__1::__split_buffer<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)> >&>::~__split_buffer()
000000000000a310 t std::__1::bad_function_call::bad_function_call()
000000000000a350 t std::__1::bad_function_call::bad_function_call()
000000000000a390 t std::__1::bad_function_call::~bad_function_call()
000000000000a330 t std::__1::bad_function_call::~bad_function_call()
000000000000a3c0 t std::__1::bad_function_call::~bad_function_call()
0000000000007cf0 T std::__1::vector<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)> > >::deallocate()
000000000000a550 T std::__1::vector<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)> > >::__move_assign(std::__1::vector<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)> > >&, std::__1::integral_constant<bool, true>)
0000000000007b30 T std::__1::enable_if<__is_forward_iterator<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>*>::value, void>::type std::__1::vector<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)> > >::__construct_at_end<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>*>(std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>*, std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>*, unsigned long)
0000000000004480 T std::__1::vector<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)> > >::__swap_out_circular_buffer(std::__1::__split_buffer<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)> >&>&)
00000000000072f0 T std::__1::enable_if<(__is_forward_iterator<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>*>::value) && (is_constructible<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>, std::__1::iterator_traits<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>*>::reference>::value), void>::type std::__1::vector<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)> > >::assign<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>*>(std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>*, std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>*)
0000000000002090 T std::__1::vector<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)> > >::reserve(unsigned long)
00000000000080f0 T std::__1::vector<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)> > >::allocate(unsigned long)
0000000000002330 t std::__1::vector<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)> > >::~vector()
0000000000003420 t std::__1::vector<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)> > >::~vector()
00000000000064e0 T std::__1::vector<std::__1::function<void (hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector&)> > >::deallocate()
000000000000a3e0 T std::__1::vector<std::__1::function<void (hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector&)> > >::__move_assign(std::__1::vector<std::__1::function<void (hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector&)> > >&, std::__1::integral_constant<bool, true>)
0000000000006320 T std::__1::enable_if<__is_forward_iterator<std::__1::function<void (hmdf::HeteroVector&)>*>::value, void>::type std::__1::vector<std::__1::function<void (hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector&)> > >::__construct_at_end<std::__1::function<void (hmdf::HeteroVector&)>*>(std::__1::function<void (hmdf::HeteroVector&)>*, std::__1::function<void (hmdf::HeteroVector&)>*, unsigned long)
0000000000003700 T std::__1::vector<std::__1::function<void (hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector&)> > >::__swap_out_circular_buffer(std::__1::__split_buffer<std::__1::function<void (hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector&)> >&>&)
0000000000005ae0 T std::__1::enable_if<(__is_forward_iterator<std::__1::function<void (hmdf::HeteroVector&)>*>::value) && (is_constructible<std::__1::function<void (hmdf::HeteroVector&)>, std::__1::iterator_traits<std::__1::function<void (hmdf::HeteroVector&)>*>::reference>::value), void>::type std::__1::vector<std::__1::function<void (hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector&)> > >::assign<std::__1::function<void (hmdf::HeteroVector&)>*>(std::__1::function<void (hmdf::HeteroVector&)>*, std::__1::function<void (hmdf::HeteroVector&)>*)
0000000000001f40 T std::__1::vector<std::__1::function<void (hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector&)> > >::reserve(unsigned long)
00000000000068e0 T std::__1::vector<std::__1::function<void (hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector&)> > >::allocate(unsigned long)
0000000000002330 t std::__1::vector<std::__1::function<void (hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector&)> > >::~vector()
0000000000003420 t std::__1::vector<std::__1::function<void (hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector&)> > >::~vector()
0000000000009500 T std::__1::vector<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)> > >::deallocate()
000000000000a6c0 T std::__1::vector<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)> > >::__move_assign(std::__1::vector<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)> > >&, std::__1::integral_constant<bool, true>)
0000000000009340 T std::__1::enable_if<__is_forward_iterator<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)>*>::value, void>::type std::__1::vector<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)> > >::__construct_at_end<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)>*>(std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)>*, std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)>*, unsigned long)
0000000000004fd0 T std::__1::vector<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)> > >::__swap_out_circular_buffer(std::__1::__split_buffer<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)> >&>&)
0000000000008b00 T std::__1::enable_if<(__is_forward_iterator<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)>*>::value) && (is_constructible<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)>, std::__1::iterator_traits<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)>*>::reference>::value), void>::type std::__1::vector<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)> > >::assign<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)>*>(std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)>*, std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)>*)
00000000000021e0 T std::__1::vector<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)> > >::reserve(unsigned long)
0000000000009900 T std::__1::vector<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)> > >::allocate(unsigned long)
0000000000002330 t std::__1::vector<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)> > >::~vector()
0000000000003420 t std::__1::vector<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)>, std::__1::allocator<std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)> > >::~vector()
0000000000008530 T std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>::swap(std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>&)
0000000000004f70 T std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>::__as_base(void*)
0000000000004e60 t std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>::function(std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>&&)
0000000000008500 t std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>::function(std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)> const&)
0000000000004e90 t std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>::function(std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>&&)
0000000000008950 t std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>::function(std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)> const&)
0000000000003630 t std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>::~function()
0000000000003650 t std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>::~function()
0000000000008480 T std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)>::operator=(std::__1::function<void (hmdf::HeteroVector const&, hmdf::HeteroVector&)> const&)
0000000000006d20 T std::__1::function<void (hmdf::HeteroVector&)>::swap(std::__1::function<void (hmdf::HeteroVector&)>&)
0000000000004210 T std::__1::function<void (hmdf::HeteroVector&)>::__as_base(void*)
0000000000004100 t std::__1::function<void (hmdf::HeteroVector&)>::function(std::__1::function<void (hmdf::HeteroVector&)>&&)
0000000000006cf0 t std::__1::function<void (hmdf::HeteroVector&)>::function(std::__1::function<void (hmdf::HeteroVector&)> const&)
0000000000004130 t std::__1::function<void (hmdf::HeteroVector&)>::function(std::__1::function<void (hmdf::HeteroVector&)>&&)
0000000000007140 t std::__1::function<void (hmdf::HeteroVector&)>::function(std::__1::function<void (hmdf::HeteroVector&)> const&)
0000000000003630 t std::__1::function<void (hmdf::HeteroVector&)>::~function()
0000000000003650 t std::__1::function<void (hmdf::HeteroVector&)>::~function()
0000000000006c70 T std::__1::function<void (hmdf::HeteroVector&)>::operator=(std::__1::function<void (hmdf::HeteroVector&)> const&)
0000000000009d40 T std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)>::swap(std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)>&)
0000000000005ac0 T std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)>::__as_base(void*)
00000000000059b0 t std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)>::function(std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)>&&)
0000000000009d10 t std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)>::function(std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)> const&)
00000000000059e0 t std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)>::function(std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)>&&)
000000000000a160 t std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)>::function(std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)> const&)
0000000000003630 t std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)>::~function()
0000000000003650 t std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)>::~function()
0000000000009c90 T std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)>::operator=(std::__1::function<void (hmdf::HeteroVector&, hmdf::HeteroVector&)> const&)
U std::exception::~exception()
U std::terminate()
000000000000b1e0 D typeinfo for std::__1::bad_function_call
U typeinfo for std::length_error
U typeinfo for std::exception
000000000000ae50 S typeinfo name for std::__1::bad_function_call
U vtable for __cxxabiv1::__si_class_type_info
000000000000b1f8 d vtable for std::__1::bad_function_call
U vtable for std::length_error
U vtable for std::exception
U operator delete(void*)
U operator new(unsigned long)
0000000000003620 t ___clang_call_terminate
U ___cxa_allocate_exception
U ___cxa_begin_catch
U ___cxa_free_exception
U ___cxa_throw
U ___gxx_personality_v0
U ___stack_chk_fail
U ___stack_chk_guard
U _memset
U dyld_stub_binder
from dataframe.
Good job finding that
Yes we need that defined at all times to include things that are in .tcc files.
The reason is that old compilers compiled template stuff differently and I wanted to have the options of using old style compiler
from dataframe.
from dataframe.
I meant old style compilers not old. Some of them are still around, like the Sun compiler on Solaris or Borland compiler.
from dataframe.
from dataframe.
Update: I found out what the problem was I will fix it soon. After disabling the async and removing some entries for easy debugging I could see a pattern.
INDEX:123432,123433,
3.111:<double>:0.87865,-0.6999,
XXXX11:<double>:2.009,3.111,
36:<string>:XXXX10,XXXX11,
123451:<int>:35,36,
123433:<ulong>:123450,123451,
from dataframe.
Greate, we are getting close
from dataframe.
OK I fixed the read function today.
Now I am back to the size_type
issue again.
I have never written an STL container before but Dataframe looks like one. From reading up on the error messages I am seeing that you are not declaring the members/type? correctly. You are using the using
keyword to declare(not sure) types? But the correct way according to these links are using a syntax like typedef typename A::value_type value_type;
which I applied to the line like
// using size_type = typename DS<DataVec>::size_type;
typedef typename DS<DataVec>::size_type size_type;
But that produces the same error as before.
https://stackoverflow.com/questions/7758580/writing-your-own-stl-container
from dataframe.
In the place where the errro is generated instead of ‘size_type’ use ‘size_t’
from dataframe.
from dataframe.
What other errors?
from dataframe.
Oh, also ‘size’ might be a keyword in windows
from dataframe.
Wait do you want me to change it here : using size_type = typename DS<DataVec>::size_type;
?
That's not were the error is thou
from dataframe.
I changed it too using size_type = typename DS<DataVec>::size_t;
(ClCompile target) ->
d:\repos\dataframe\src\../include/DataFrame.h(484): warning C4346: 'size_type': dependent name is not a type [D:\Repos\DataFrame\build\datasci_tester.vcxproj]
D:\Repos\DataFrame\src\datasci_tester.cc(139): warning C4267: 'initializing': conversion from 'size_t' to 'int', possible loss of data [D:\Repos\DataFrame\build\datasci_tester.vcxproj]
"D:\Repos\DataFrame\build\ALL_BUILD.vcxproj" (default target) (1) ->
"D:\Repos\DataFrame\build\datasci_tester.vcxproj" (default target) (4) ->
(ClCompile target) ->
d:\repos\dataframe\src\../include/DataFrame.h(484): error C2061: syntax error: identifier 'size_type' [D:\Repos\DataFrame\build\datasci_tester.vcxproj]
d:\repos\dataframe\src\../include/DataFrame.h(484): error C2238: unexpected token(s) preceding ';' [D:\Repos\DataFrame\build\datasci_tester.vcxproj]
d:\repos\dataframe\src\../include/DataFrame.h(53): error C2039: 'size_t': is not a member of 'std::vector<hmdf::DataFrame<unsigned long,std::vector>::DataVec,std::allocator<_Ty>>' [D:\Repos\DataFrame\build\datasci_tester.vcxproj]
2 Warning(s)
3 Error(s)
Time Elapsed 00:00:02.43
from dataframe.
This is line 484 they talking about , it looks fine to me ?
const DataFrame::size_type size;
I think the problem is at the declaration. The original error was also at this line btw way.
Edit: Changing the identifier name from size
to my_size
still gives the same error. I also found out this sort of error when there is a circular dependency b/w your classes which I can't see anywhere. Can you ?
from dataframe.
You shouldn't need to change any declarations. using
is the new way of defining a type.
On the line that you are getting the error just change
const DataFrame::size_type size;
to
const size_t size;
from dataframe.
Ok I think that did it, but then that was followed up with some errors saying too few template arguments
which I changed like this
modified include/BaseContainer.tcc
@@ -20,26 +20,26 @@ std::unordered_map<const HeteroVector *, V> HeteroVector::items_;
template<typename T, typename V>
V &HeteroVector::get_vec() {
- auto iter = items_<T>.find (this);
+ auto iter = items_<T,V>.find (this);
// don't have it yet, so create functions for copying and destroying
- if (iter == items_<T>.end()) {
+ if (iter == items_<T,V>.end()) {
clear_functions_.emplace_back (
- [](HeteroVector &hv) { items_<T>.erase(&hv); });
+ [](HeteroVector &hv) { items_<T,V>.erase(&hv); });
// if someone copies me, they need to call each
// copy_function and pass themself
copy_functions_.emplace_back (
[](const HeteroVector &from, HeteroVector &to) {
- items_<T>[&to] = items_<T>[&from];
+ items_<T,V>[&to] = items_<T,V>[&from];
});
move_functions_.emplace_back (
[](HeteroVector &from, HeteroVector &to) {
- items_<T>[&to] = std::move(items_<T>[&from]);
+ items_<T,V>[&to] = std::move(items_<T,V>[&from]);
});
- iter = items_<T>.emplace (this, V()).first;
+ iter = items_<T,V>.emplace (this, V()).first;
}
return (iter->second);
The next error is here
template<typename TS, template<typename DT, class... types> class DS>
template<typename T>
inline constexpr T DataFrame<TS, DS>::_get_nan() {
if (std::numeric_limits<T>::has_quiet_NaN)
return (std::numeric_limits<T>::quiet_NaN());
return (T());
}
Saying constexpr functions should only have one return statement.
from dataframe.
Deleting that last return statement just to see if it works also brings out other places where there is few template arguments like here,
template<typename T, typename U>
void HeteroVector::visit_impl_help_ (T &visitor) {
auto iter = items_<U>.find (this);
if (iter != items_<U>.end())
for (auto &&element : iter->second)
visitor(element);
}
Edit: Are you missing default parameter values ?
from dataframe.
take the constexpr
out for Windows.
The second return must remain there
from dataframe.
Please also make all your changes Windows specific
from dataframe.
Well Well ....Visual Studio 2015 was the black sheep. I upgraded to VS 2017 and all the problems went away. No more size_t problems or anything like that. But yeah the codebase does not support VS 2015, or VS 2015 does not support C++17. (Which is weird because the compiler version for me was VS19 in both cases ).
But we are back to the problem when exporting libraries in Windows. I can't use the dll because the symbols are not properly declared as exported . Which I will look into.
from dataframe.
Ahhh good find
Most of this library is header only. So l feel your export problem is related to defining the dms-include-src directive
from dataframe.
I removed all the ifdefs before the include files and ran it same error, exporting symbols for the dll is the problem, but for now I thought I could build the libs statically on windows which is what I am trying here :
https://ci.appveyor.com/project/justinjk007/dataframe/build/24/job/7mm5idjw0ksjdkbl
But for some reason it's segfaulting!, ONLY ON WINDOWS.
from dataframe.
OK..so thanks the the people in the slack channel we found a Visual Studio bug, 2 years old
This change fixes that
+std::unordered_map<const HeteroVector *, V> HeteroVector::items_{};
- std::unordered_map<const HeteroVector *, V> HeteroVector::items_;
Should I leave this change only for windows or for all platforms ? seems to be building fine on OS X and Linux.
from dataframe.
Related Issues (20)
- Group by on string dataframe
- do get_data_by_isel on the view HOT 6
- gen_rand_tester HOT 1
- Problem about reading CSV with empty values. HOT 7
- Errors compiling the HelloWorld example HOT 3
- Not proper conversion between timezones? HOT 3
- Undefined Reference HOT 1
- Issues while building the project HOT 2
- Remove Duplicates (just by Index). HOT 2
- Convert C++ Dataframe to Pandas HOT 1
- Merge Dataframe functionality HOT 1
- Memory free/access errors with concurrent independent dataframes. HOT 11
- DateTime internal properties not setting properly on copy / set_time. HOT 6
- Is multiindex supported? HOT 2
- N-bar returns HOT 1
- Master branch doesn't compile HOT 1
- build Dataframe3.2.0 ERROR HOT 3
- Buffer overflow when reading CSV HOT 11
- [conan] 3.2.0: bad sha 256
- [package.json] Incorrect version
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dataframe.