首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rcpp使用第三方库Kvaser kvmlib

Rcpp使用第三方库Kvaser kvmlib
EN

Stack Overflow用户
提问于 2018-11-04 14:12:03
回答 1查看 148关注 0票数 1

我正在寻找最好的方法来使用Kvaser SDK (https://www.kvaser.com/developer-blog/get-hardware-kvaser-sdk-libraries/)来转换文件从一个can Memorator到一个R闪亮的应用程序中可用的格式。数据文件以.KMF文件的形式记录在设备上。kvmlib库中有一些函数可以将该文件转换为.KME50文件,然后可以使用kvlclib库中的函数将该文件转换为.csv文件。

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

有没有人能告诉我我的方法是否正确。我认为这可能与连接到这些库有关,因为我刚接触C++并链接到第三方库。包含的是我得到的错误的一个例子。

代码语言:javascript
复制
#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;
}
EN

回答 1

Stack Overflow用户

发布于 2018-11-04 16:00:08

windows.h和一些R标头都定义了像Realloc这样的宏。您可以使用以下命令禁止R标头执行此操作

代码语言:javascript
复制
#define STRICT_R_HEADERS
#include <Rcpp.h>

正如@SymbolixAU在评论中提到的那样:在包的上下文中,您还可以使用src/Makevars

代码语言:javascript
复制
PKG_CPPFLAGS=-DSTRICT_R_HEADERS
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53138236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档