我正在使用 Visual Studio 创建我的 C++ DLLS。一个示例 C++ 函数是
void _stdcall MyFunc(char ** strInput)
{
MessageBox(NULL,"Hi from C++", L"C++ program", NULL);
}
然后我可以通过执行以下操作从 R 调用此函数
dyn.load("Path\myDll.dll")
.C("MyFunc","Hello")
当从 R 64 位调用时,上面的代码工作正常。但是,当我将我的 DLL 编译为 32 位 DLL 并从 R 32 位调用它时,它会在短暂显示消息框后崩溃。我知道我的 DLL 正在工作并且是一个有效的 32 位 DLL,因为我可以毫无问题地从其他程序调用它的函数。你知道为什么当 R 64 位可以毫无问题地处理同一个调用时,为什么 R 32 位会崩溃吗?