Giter Site home page Giter Site logo

Comments (140)

hosseinmoein avatar hosseinmoein commented on August 25, 2024 1

That is right

from dataframe.

hosseinmoein avatar hosseinmoein commented on August 25, 2024 1

I am off the grid. Because of severe storms in our area we are without electricity

from dataframe.

hosseinmoein avatar hosseinmoein commented on August 25, 2024 1

Please let me know whenever you are ready to merge your branch into my master.
I can do a final walk through.

from dataframe.

justinjk007 avatar justinjk007 commented on August 25, 2024 1

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.

  1. I am so happy I figured it out
  2. Why do you need that ? Everybody else will also need to define that!
  3. I never said I fixed the windows branch lol. I only fixed one issue, but I will finish that tomorrow!

💯 💯 💯 💯

from dataframe.

justinjk007 avatar justinjk007 commented on August 25, 2024

If its not, I would consider adding cmake support!

from dataframe.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

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.

justinjk007 avatar justinjk007 commented on August 25, 2024

Yep..but gotta wait 22 or april that's when my exams are over!

from dataframe.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

Fine with me
Thanks

from dataframe.

justinjk007 avatar justinjk007 commented on August 25, 2024

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.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

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.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

You can get rid of pthread

from dataframe.

justinjk007 avatar justinjk007 commented on August 25, 2024

unistd.h is also for posix I think.

from dataframe.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

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.

justinjk007 avatar justinjk007 commented on August 25, 2024

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.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

what is the link?

from dataframe.

justinjk007 avatar justinjk007 commented on August 25, 2024

what(): DMScu_MMapFile::open(): ::open(): (2) No such file or directory --- /home/hossein/WindowsShare/Linux/src/DataSci/src/sample_data.csv

from dataframe.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

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.

justinjk007 avatar justinjk007 commented on August 25, 2024

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.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

makes sense

from dataframe.

justinjk007 avatar justinjk007 commented on August 25, 2024

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.

justinjk007 avatar justinjk007 commented on August 25, 2024

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.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

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.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

Hi,
I wanted to touch base and see if you were able to progress, you need info?

from dataframe.

justinjk007 avatar justinjk007 commented on August 25, 2024

So from the DMScu directory, there will be 3 test binaries and 1 library ?

from dataframe.

justinjk007 avatar justinjk007 commented on August 25, 2024

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.

justinjk007 avatar justinjk007 commented on August 25, 2024

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.

justinjk007 avatar justinjk007 commented on August 25, 2024

I have pushed current changes to my fork anyways

from dataframe.

justinjk007 avatar justinjk007 commented on August 25, 2024

Hoping you will do fine....I will iron out my scripts...by then.

from dataframe.

justinjk007 avatar justinjk007 commented on August 25, 2024

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.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

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.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

You can look at my make file

from dataframe.

justinjk007 avatar justinjk007 commented on August 25, 2024

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.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

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.

justinjk007 avatar justinjk007 commented on August 25, 2024

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.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

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.

justinjk007 avatar justinjk007 commented on August 25, 2024

from dataframe.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

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.

justinjk007 avatar justinjk007 commented on August 25, 2024

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.

justinjk007 avatar justinjk007 commented on August 25, 2024

So its only that tester binary that needs pthreads, not Data frame itslef

from dataframe.

justinjk007 avatar justinjk007 commented on August 25, 2024

I didn't get your comment in the MMap files, why they should be changed for windows ?

from dataframe.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

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.

justinjk007 avatar justinjk007 commented on August 25, 2024

from dataframe.

justinjk007 avatar justinjk007 commented on August 25, 2024

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.

justinjk007 avatar justinjk007 commented on August 25, 2024

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.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

Yes, .tcc files always go wherever the header files go

from dataframe.

justinjk007 avatar justinjk007 commented on August 25, 2024

from dataframe.

justinjk007 avatar justinjk007 commented on August 25, 2024

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.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

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.

justinjk007 avatar justinjk007 commented on August 25, 2024

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.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

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.

justinjk007 avatar justinjk007 commented on August 25, 2024

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.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

sounds good to all

from dataframe.

justinjk007 avatar justinjk007 commented on August 25, 2024

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.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

mmfile_tester.cc should not be included in Windows build.

from dataframe.

justinjk007 avatar justinjk007 commented on August 25, 2024

@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.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

It had hard-coded path in it. I commented out those in my repository. Get my latest commit

from dataframe.

justinjk007 avatar justinjk007 commented on August 25, 2024

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.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

Ok, looks very good thanks,
A few comments:

  1. 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.
  2. You also still have to modify the DataFrame read() and write() to use regular files in case of Windows.
  3. 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.

justinjk007 avatar justinjk007 commented on August 25, 2024

@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
image

from dataframe.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

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.

justinjk007 avatar justinjk007 commented on August 25, 2024

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.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

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.

justinjk007 avatar justinjk007 commented on August 25, 2024

No line 483 is not fixed yet.

from dataframe.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

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.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

Hey, how are you doing? Do you have any blockers?

from dataframe.

justinjk007 avatar justinjk007 commented on August 25, 2024

from dataframe.

justinjk007 avatar justinjk007 commented on August 25, 2024

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.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

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.

justinjk007 avatar justinjk007 commented on August 25, 2024

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.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

Sounds good

from dataframe.

justinjk007 avatar justinjk007 commented on August 25, 2024

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.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

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.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

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.

justinjk007 avatar justinjk007 commented on August 25, 2024

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.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

Your unresolved symbols are all in the header file. That is why I don’t think it is a library thing

from dataframe.

justinjk007 avatar justinjk007 commented on August 25, 2024

DFVisitors.h is installed /usr/local/include/DFVisitors.h

from dataframe.

justinjk007 avatar justinjk007 commented on August 25, 2024

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.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

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.

justinjk007 avatar justinjk007 commented on August 25, 2024

from dataframe.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

I meant old style compilers not old. Some of them are still around, like the Sun compiler on Solaris or Borland compiler.

from dataframe.

justinjk007 avatar justinjk007 commented on August 25, 2024

from dataframe.

justinjk007 avatar justinjk007 commented on August 25, 2024

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.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

Greate, we are getting close

from dataframe.

justinjk007 avatar justinjk007 commented on August 25, 2024

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://social.msdn.microsoft.com/Forums/vstudio/en-US/e29b42eb-c3c0-4f19-843b-24ecdefb956f/vc-60-code-migration-in-to-vc-vs2010-not-compile-typedef-not-work-properly?forum=vcgeneral

https://stackoverflow.com/questions/7758580/writing-your-own-stl-container

from dataframe.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

In the place where the errro is generated instead of ‘size_type’ use ‘size_t’

from dataframe.

justinjk007 avatar justinjk007 commented on August 25, 2024

from dataframe.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

What other errors?

from dataframe.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

Oh, also ‘size’ might be a keyword in windows

from dataframe.

justinjk007 avatar justinjk007 commented on August 25, 2024

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.

justinjk007 avatar justinjk007 commented on August 25, 2024

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.

justinjk007 avatar justinjk007 commented on August 25, 2024

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.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

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.

justinjk007 avatar justinjk007 commented on August 25, 2024

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.

justinjk007 avatar justinjk007 commented on August 25, 2024

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.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

take the constexpr out for Windows.
The second return must remain there

from dataframe.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

Please also make all your changes Windows specific

from dataframe.

justinjk007 avatar justinjk007 commented on August 25, 2024

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.

image

from dataframe.

hosseinmoein avatar hosseinmoein commented on August 25, 2024

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.

justinjk007 avatar justinjk007 commented on August 25, 2024

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.

justinjk007 avatar justinjk007 commented on August 25, 2024

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.

Build status

Build Status

from dataframe.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.