I’ve compiled Mxnet from source for a C++ use. Yet, I try to had a new custom MxDataIter to the lib. I was inspired of the MnistIter to adapt the code. Then, I would like to add myIter though my C++ project and not in the lib.
My works can’t compile because of errors 8 of type ‘LNK2001’ (see below). Some of them were easily solved by adding cudnn.lib and cudart.lib in the additionnal dependancies of the properties (Visual Studio 2017). Some of them seems to be solved by including in the code mxnet/src/base.cc or mxnet/src/io/io.cc. But for the other error, if I add the files.cc where the code is defined, hundreds of new errors appear…
->solved by including in the code mxnet/src/base.cc :
error LNK2001: unresolved external symbol “[…] mxnet::Context::CuDNNLibChecks(void) […]”
error LNK2001:unresolved external symbol “[…] mxnet::Context::CudaLibChecks(void)” […]
->solved by including mxnet/src/io/io.cc :
error LNK2001: […] " dmlc::parameter::ParamManager mxnet::io::PrefetcherParam::__ MANAGER__(void)" […]
error LNK2001: […] “dmlc::Registry< struct mxnet::DataIteratorReg> dmlc::Registry< struct mxnet::DataIteratorReg>::Get(void)”
->including mxnet/src/ndarray/ndarrays.cc should solve the errors LNK2001 unresolved external symbol about the function mxnet::NDArray::Chunk::~Chunk(void) and mxnet::NDArray::SetTBlob(void)
but instead create new errors like : error C2144 missing ‘)’ or ‘;’, error C2988 unrecognizable template declaration/definition, C2065 undeclared identifier, etc. in the files that include into the include files. (tons of error in mxnet/src/operator/tensor/broadcast_reduce-inl.h)
Please, can someone help me to understand how to create properly and add a custom DataIter in own project ?