VisualStudioを使用してC++DLLを作成しています。サンプルのC++関数は
void _stdcall MyFunc(char ** strInput)
{
MessageBox(NULL,"Hi from C++", L"C++ program", NULL);
}
次に、次のようにしてRからこの関数を呼び出すことができます。
dyn.load("Path\myDll.dll")
.C("MyFunc","Hello")
上記のコードは、R64ビットから呼び出された場合に正常に機能します。ただし、DLLを32ビットDLLとしてコンパイルし、R 32ビットから呼び出すと、メッセージボックスが短時間表示された後にクラッシュします。他のプログラムから問題なく関数を呼び出すことができるので、DLLが機能していて、有効な32ビットDLLであることを知っています。R 64ビットが同じ呼び出しを問題なく処理できるのに、なぜR 32ビットがクラッシュするのか知っていますか?