calling C++ from R

calling C++ from R

本文关键字:from C++ calling      更新时间:2023-10-16

我正在使用Visual Studio创建我的C++DLL。一个示例C++函数是

void _stdcall MyFunc(char ** strInput)
{
   MessageBox(NULL,"Hi from C++", L"C++ program", NULL);
}

然后,我可以通过执行以下从R调用此函数

dyn.load("PathmyDll.dll")
.C("MyFunc","Hello")

当从R 64位调用时,上面的代码运行良好。然而,当我将DLL编译为32位DLL并从R 32位调用它时,它在短暂显示消息框后崩溃。我知道我的DLL正在工作,是一个有效的32位DLL,因为我可以从其他程序调用它的函数,没有问题。你知道为什么当R 64位可以毫无问题地处理同一个调用时,R 32位会崩溃吗?

从注释重新存储:

_stdcall替换为__cdecl–x64有一个单一的、通用的调用约定,但x86没有,而且你显然用错了。