Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Rcpp使用第三方库Kvaser kvmlib_C++_R_Rcpp - Fatal编程技术网

C++ Rcpp使用第三方库Kvaser kvmlib

C++ Rcpp使用第三方库Kvaser kvmlib,c++,r,rcpp,C++,R,Rcpp,我正在寻找使用Kvaser SDK()将can存储器中的文件转换为R应用程序中可用格式的最佳方法。数据文件以.KMF文件的形式记录在设备上。kvmlib库中有一些函数可以将此文件转换为.KME50文件,然后可以使用kvlclib库中的函数将其转换为.csv文件 我希望能够从R内部使用此API中的函数调用。我决定使用Rcpp,并尝试以这种方式连接到库。我将所有需要的头文件与canlib.dll文件一起放入一个文件夹,并将其设置为我的R工作区。每当我尝试为包含任何kvlclib.h、kvmlib.h

我正在寻找使用Kvaser SDK()将can存储器中的文件转换为R应用程序中可用格式的最佳方法。数据文件以.KMF文件的形式记录在设备上。kvmlib库中有一些函数可以将此文件转换为.KME50文件,然后可以使用kvlclib库中的函数将其转换为.csv文件

我希望能够从R内部使用此API中的函数调用。我决定使用Rcpp,并尝试以这种方式连接到库。我将所有需要的头文件与canlib.dll文件一起放入一个文件夹,并将其设置为我的R工作区。每当我尝试为包含任何kvlclib.h、kvmlib.h或windows.h头的.cpp文件运行sourceCpp时,都会出现一系列错误

有人能告诉我我的方法是否正确吗。我认为这可能与连接这些库有关,我是C++的新手,连接到第三方库。包括一个例子,我得到的错误

#include <Rcpp.h>
#include <windows.h>


using namespace Rcpp;

// [[Rcpp::export]]
double meanC(NumericVector x) {
  int n = x.size();
  double total = 0;

  for(int i = 0; i < n; ++i) {
    total += x[i];
  }
  return total / n;
}

#包括
#包括
使用名称空间Rcpp;
//[[Rcpp::导出]]
双平均值C(数值向量x){
int n=x.size();
双倍合计=0;
对于(int i=0;i
两个
windows.h
和一些R头都定义了宏,如
Realloc
。您可以使用

#define STRICT_R_HEADERS
#include <Rcpp.h>

您是否首先检查是否可以在cpp中编译带有标题的示例?通过此选项,您可以检查这是否是cpp内部问题(兼容性问题)。请将您的问题包括在控制台窗口中的错误消息(选择),而不是屏幕截图。类似地,您可以在
Makevars
中定义此问题(如)
PKG_CPPFLAGS=-DSTRICT_R_HEADERS