我正在尝试使用Rtools v3.4(最新版)在Windows中构建R包
我已经开发了一个包含Rcpp的软件包,我已经在Ubuntu系统中成功构建了它,但是当我尝试使用命令在我的Windows 10机器中构建它时
R CMD INSTALL --build --compile-both mypackage
我收到以下错误:
file1.hpp:25:18: required from here
C:/Rtools/mingw_32/i686-w64-mingw32/include/c++/ext/new_allocator.h:110:30: error: invalid conversion from 'const void*' to 'void*' [-fpermissive]
{ ::operator delete(__p); }
我的Makefile.win文件包含以下行:
PKG_CPPFLAGS=-I./dep1/src -I./dep2/cudd -I./dep2/mtr -I./dep2/cplusplus -I./dep2/dddmp -I./dep2/util -I./dep2
CXX_STD=CXX11
PKG_LIBS=-llib1 -lm -fPIC -L./include/windows -llib2
该错误可能是什么原因?
@DirkEddelbuettel评论后编辑:
如果添加-fpermissive标志我解决了该问题,但会出现新错误
R CMD INSTALL --build --compile-both -fpermissive mypackage
file1.hpp:95:71: required from here
C:/Rtools/mingw_32/i686-w64-mingw32/include/c++/bits/stl_construct.h:75:7: error: invalid static_cast from type 'const std::basic_string<char>*' to type 'void*'
{ ::new(static_cast<void*>(__p)) _T1(std::forward<_Args>(__args)...); }
冲突类具有以下结构:
#ifndef __myKconf__configInfo__
#define __myKconf__configInfo__
#include <iostream>
#include <map>
#include <vector>
class myClass : public parentClass {
public :
myClass() {
...
}
//some public methods
void addToMenu(const std::string& s) {
contents.push_back(s);
}
private:
std::vector<const std::string> contents;
//more private elements
};
#endif
答案 0 :(得分:0)
很难添加到常量字符串...
private:
std::vector<const std::string> contents;
//more private elements
成功:
private:
std::vector<std::string> contents;
你应该是金色的