0
C函數我想的R函數中換到的這些C函數任一項的調用:調用來自R
char *sendpraat (void *display, const char *programName, long timeOut, const char *text);
wchar_t *sendpraatW (void *display, const wchar_t *programName, long timeOut, const wchar_t *text);
我可以建立精細的源代碼:
$ R CMD SHLIB -o pRaat.so sendpraat.c
clang -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/include - fPIC -mtune=core2 -g -O2 -c sendpraat.c -o sendpraat.o
clang -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module - multiply_defined suppress -L/usr/local/lib -L/usr/local/lib -o pRaat.so sendpraat.o - F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation
但當我調用加載函數時,導致R崩潰:
dyn.load("pRaat.so")
.Call("sendpraat",
as.integer(1),
as.character("Praat"),
as.integer(0),
as.character("Create Sound as pure tone... tone 1 0 0.4 44100 440 0.2 0.01 0.01"),
PACKAGE="pRaat")
*** caught segfault ***
address 0x0, cause 'unknown'
難道是我造成這種情況的(void *)嗎?它不被我的plattform(OSX)上的底層函數使用。
任何想法?