int main (int argc, char** argv) { if(!mclInitializeApplication(NULL,0)) { std::cerr << "アプリケーションを初期化できません" << std::endl; mclGetLastErrorMessage(); return -1; } RTC::Manager* manager; manager = RTC::Manager::init(argc, argv); // Initialize manager manager->init(argc, argv); // Set module initialization proceduer // This procedure will be invoked in activateManager() function. manager->setModuleInitProc(MyModuleInit); // Activate manager and register to naming service manager->activateManager(); // run the manager in blocking mode // runManager(false) is the default. manager->runManager(); // If you want to run the manager in non-blocking mode, do like this // manager->runManager(true); mclTerminateApplication(); return 0; }
bool* shared_lib_func(unsigned char* raw, V3DLONG total_bytes, V3DLONG unit_bytes, V3DLONG x, V3DLONG y, V3DLONG z, V3DLONG t,int paran, double* para,std::string fileDir){ std::cerr << "Matlab Part Start." << std::endl; // Initialize the MATLAB Compiler Runtime global state /*if (!mclInitializeApplication(NULL, 0)) { std::cerr << "Could not initialize the application properly." << mclGetLastErrorMessage() << 'Z' << std::endl; //return -1; }*/ // Initialize the Vigenere library if (!libvaa_port_testInitialize()) { std::cerr << "Could not initialize the library properly." << mclGetLastErrorMessage() << 'Z' <<std::endl; //return -1; } std::cout << "Intialization Finished" << std::endl; mxArray *mx_output = NULL; size_t raw_dim[1] = {x*y*z*t}; size_t dim[1] = { 1 }; size_t dim_para[1]; dim_para[0] = paran; mxArray *mx_raw, *mx_unit_bytes, *mx_x, *mx_y, *mx_z, *mx_t, *mx_para,*mx_fileDir; int pause; unsigned char *dynamic_raw = (unsigned char *)mxCalloc(total_bytes, sizeof(UINT8_T)); for (V3DLONG i = 0; i < total_bytes; i++){ dynamic_raw[i] = raw[i]; } mx_raw = mxCreateUninitNumericArray(1, raw_dim, get_mxClass(unit_bytes),mxREAL); mxSetData(mx_raw, dynamic_raw); V3DLONG *dynamic_unit_bytes = (V3DLONG *)mxCalloc(1, sizeof(V3DLONG)); dynamic_unit_bytes[0] = unit_bytes; mx_unit_bytes = mxCreateUninitNumericArray(1, dim, get_mxClass(8), mxREAL); mxSetData(mx_unit_bytes, dynamic_unit_bytes); V3DLONG *dynamic_x = (V3DLONG *)mxCalloc(1, sizeof(V3DLONG)); dynamic_x[0] = x; mx_x = mxCreateUninitNumericArray(1, dim, get_mxClass(8), mxREAL); mxSetData(mx_x, dynamic_x); V3DLONG *dynamic_y = (V3DLONG *)mxCalloc(1, sizeof(V3DLONG)); dynamic_y[0] = y; mx_y = mxCreateUninitNumericArray(1, dim, get_mxClass(8), mxREAL); mxSetData(mx_y, dynamic_y); V3DLONG *dynamic_z = (V3DLONG *)mxCalloc(1, sizeof(V3DLONG)); dynamic_z[0] = z; mx_z = mxCreateUninitNumericArray(1, dim, get_mxClass(8), mxREAL); mxSetData(mx_z, dynamic_z); V3DLONG *dynamic_t = (V3DLONG *)mxCalloc(1, sizeof(V3DLONG)); dynamic_t[0] = t; mx_t = mxCreateUninitNumericArray(1, dim, get_mxClass(8), mxREAL); mxSetData(mx_t, dynamic_t); double *dynamic_para = (double *)mxCalloc(paran, sizeof(double)); for (int i = 0; i < paran; i++){ dynamic_para[i] = para[i]; } mx_para = mxCreateUninitNumericArray(1, dim_para, mxDOUBLE_CLASS, mxREAL); mxSetData(mx_para, dynamic_para); mx_fileDir = mxCreateString(fileDir.c_str()); std::cout << "Assignment Finished\n"; mlfVaa3d_trace3D(1, &mx_output, mx_raw, mx_unit_bytes, mx_x, mx_y, mx_z, mx_t, mx_para,mx_fileDir); //y = (double*)mxGetPr(y_ptr); //std::cout << "answer:" << *y << '\n'; // Shut down the library and the application global state. bool* output = mxGetLogicals(mx_output); mxDestroyArray(mx_raw); std::cout << "free mx raw\n"; //mxDestroyArray(mx_output); //std::cout << "free mx output"; mxDestroyArray(mx_unit_bytes); std::cout << "free mx unit\n"; mxDestroyArray(mx_x); std::cout << "free mx x\n"; mxDestroyArray(mx_y); std::cout << "free mx y\n"; mxDestroyArray(mx_z); std::cout << "free mx z\n"; mxDestroyArray(mx_t); std::cout << "free mx t\n"; mxDestroyArray(mx_para); std::cout << "free mx para\n"; libvaa_port_testTerminate(); //mclTerminateApplication(); std::cout << "Matlab Part Finished." << std::endl; return output; }