Я пытаюсь быстро запустить динамические разделяемые библиотеки в D, но у меня возникла проблема.
Я строю следующий код с dmd -shared ./testlib.d
:
module testlib;
import std.c.stdio;
extern (C) export int hello(int a) {
printf("Number is %d", a);
return (a + 1);
}
Он хорошо работает и работает.Но когда я пытаюсь использовать следующий источник D'ish:
module testlib;
import std.stdio;
extern (C) export int hello(int a) {
writefln("Number is %d", a);
return (a + 1);
}
Сбой при ошибке сегментации, когда я пытаюсь вызвать hello
.Что я делаю не так?
Я звоню hello
, используя Python:
import ctypes
testlib = ctypes.CDLL('testlib.dylib');
print (testlib.hello(10))
UPD1: Кажется, что я также не могу использовать такие функции Фобоса, как std.conv.to!(string)
.
UPD2: В Windows такой проблемы нет, кажется, все работает нормально.Mac OS X страдает от этого.
UPD3: Возможно, это связано с GC.Я должен каким-то образом инициализировать GC, но core.memory.GC.enable () все еще не работает с ошибкой сегментации.