编译NDKr12b-尝试从Eigen库编译Matrix.h时遇到问题

时间:2019-02-24 04:58:15

标签: android c++ eigen

我正在将matrix.h文件导入到我的android项目中。这是弹出的错误。我该如何解决这些错误?

 /xrffunk/src/deconvolution/SumPeaks/Matrix.h:20:8: error: 'traits' is not a class template
   struct traits<Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols> >
          ^
  /xrffunk/src/deconvolution/SumPeaks/Matrix.h:20:15: error: 'Matrix' was not declared in this scope
   struct traits<Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols> >
                 ^
  /xrffunk/src/deconvolution/SumPeaks/Matrix.h:20:75: error: expected unqualified-id before '>' token
   struct traits<Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols> >
                                                                             ^
  In file included from /xrffunk/src/deconvolution/SumPeaks/Regions.h:21:0,
                   from /xrffunk/src/deconvolution/SumPeaks/IMD.h:8,
                   from /xrffunk/src/xrffunk.cpp:28:
  /xrffunk/src/deconvolution/SumPeaks/Matrix.h:181:27: error: expected template-name before '<' token
     : public PlainObjectBase<Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols> >
                             ^
  /xrffunk/src/deconvolution/SumPeaks/Matrix.h:181:27: error: expected '{' before '<' token
  /xrffunk/src/deconvolution/SumPeaks/Matrix.h:181:27: error: expected unqualified-id before '<' token
  /xrffunk/src/deconvolution/SumPeaks/Matrix.h:430:32: error: wrong number of template arguments (3, should be 6)
   typedef Matrix<Type, Size, Size> Matrix##SizeSuffix##TypeSuffix;  \
                                  ^
  /xrffunk/src/deconvolution/SumPeaks/Matrix.h:443:1: note: in expansion of macro 'EIGEN_MAKE_TYPEDEFS'
   EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 2, 2) \
   ^

1 个答案:

答案 0 :(得分:1)

您不能直接包含内部文件library(plotly) library(shiny) library(htmlwidgets) js <- c( "function(el, x, inputName){", " var id = el.getAttribute('id');", " var d3 = Plotly.d3;", " el.on('plotly_restyle', function(evtData) {", " var out = {};", " d3.select('#' + id + ' g.legend').selectAll('.traces').each(function(){", " var trace = d3.select(this)[0][0].__data__[0].trace;", " out[trace.name] = trace.visible;", " });", " Shiny.setInputValue(inputName, out);", " });", "}") YNElement <- function(idx){sprintf("YesNo_button-%d", idx)} ui <- fluidPage( fluidRow( column(2, h5("Keep/Drop choices linked to colorscheme 1"), uiOutput('YNbuttons') ), column(8, plotlyOutput("plot1") ), column(2, h5('Switch grouping'), actionButton(inputId = 'Switch', label = icon('refresh'), style = "color: #f7ad6e; background-color: white; border-color: #f7ad6e; height: 40px; width: 40px; border-radius: 6px; border-width: 2px; text-align: center; line-height: 50%; padding: 0px; display:block; margin: 2px") ), style = "margin-top:150px" ), verbatimTextOutput("tracesPlot1"), verbatimTextOutput("tracesPlot2") ) server <- function(input, output, session) { values <- reactiveValues(colors = T, NrOfTraces = length(unique(mtcars$cyl))) output$plot1 <- renderPlotly({ if(values$colors) { colors <- c('red', 'blue', 'green') } else {colors <- c('black', 'orange', 'gray')} p1 <- plot_ly() p1 <- add_trace(p1, data = mtcars, x = ~disp, y = ~mpg, type = 'scatter', mode = 'markers', color = ~as.factor(cyl), colors = colors) p1 <- layout(p1, title = 'mtcars group by cyl with switching colors') p1 <- plotly_build(p1) if(values$colors) { for(i in seq_along(p1$x$data)){ p1$x$data[[i]]$visible <- values$legenditems[[p1$x$data[[i]]$name]]} } p1 %>% onRender(js, data = "tracesPlot1") }) observeEvent(input$Switch, { values$colors <- !values$colors }) observeEvent(values$dYNbs_cyl_el, { legenditems <- values$dYNbs_cyl_el legenditems[which(legenditems == FALSE)] <- 'legendonly' legenditems[which(legenditems == TRUE )] <- 'TRUE' names(legenditems) <- sort(unique(mtcars$cyl)) values$legenditems <- as.list(legenditems) }) observeEvent(values$NrOfTraces, { values$dYNbs_cyl_el <- rep(T,values$NrOfTraces) names(values$dYNbs_cyl_el) <- sapply(1:values$NrOfTraces, function(x) {YNElement(x)}) }) output$YNbuttons <- renderUI({ req(values$NrOfTraces) lapply(1:values$NrOfTraces, function(el) { YNb <- YNElement(el) if(values$dYNbs_cyl_el[[YNb]] == T ) { div(actionButton(inputId = YNb, label = icon("check"), style = "color: #339FFF; background-color: white; border-color: #339FFF;height: 34px; width: 34px; border-radius: 6px; border-width: 2px; text-align: center; line-height: 50%; padding: 0px; display:block; margin: 2px")) } else { div(actionButton(inputId = YNb, label = icon("times"), style = "color: #ff4d4d; background-color: white; border-color: #ff4d4d;height: 34px; width: 34px; border-radius: 6px; border-width: 2px; text-align: center; line-height: 50%; padding: 0px; display:block; margin: 2px")) } }) }) flipYNb_FP1 <- function(idx){ YNb <- YNElement(idx) values$dYNbs_cyl_el[[YNb]] <- !values$dYNbs_cyl_el[[YNb]] } observe({ lapply(1:values$NrOfTraces, function(ob) { YNElement <- YNElement(ob) observeEvent(input[[YNElement]], { flipYNb_FP1(ob) }, ignoreInit = T) }) }) observeEvent(input$tracesPlot1, { listTraces <- input$tracesPlot1 listTracesTF <- gsub('legendonly', FALSE, listTraces) listTracesTF <- as.logical(listTracesTF) lapply(1:values$NrOfTraces, function(el) { if(el <= length(listTracesTF)) { YNb <- YNElement(el) if(values$dYNbs_cyl_el[[YNb]] != listTracesTF[el]) { values$dYNbs_cyl_el[[YNb]] <- listTracesTF[el] } } }) }) output$tracesPlot1 <- renderPrint({ unlist(input$tracesPlot1) }) output$tracesPlot2 <- renderPrint({ unlist(values$legenditems) }) } shinyApp(ui, server) 。您必须包含Eigen/src/CoreMatrix.h,该文件要求Eigen/Core中的所有文件。