我有一個拷貝一個字符串到一個已經傳遞給它的緩衝區中的C函數:如何使統一FFI工作菲羅
void get_machine(char *buf) {
/* do something to acquire the machine string */
strcpy(buf, machine_string);
}
我想從菲羅稱之爲:
machine := String new: 256.
self ffiCall: #(void get_machine(String machine)) module: 'ffilibc.so'.
但這不起作用:machine_string的內容不會被複制到機器中。什麼是正確的方法來做到這一點?
對不起,我的意思是machine_string的內容無法複製到緩衝區中。我得到的只有256個空間。 –
只是爲了安全起見:您確定C函數能做到您認爲的那樣嗎?你確定它沒有收到一個空字符串? –
是的,我確定。我編寫了一個簡單的C程序來測試C庫。 –