Я хотел бы создать Java-код общей библиотеки (.dll) с помощью graalVM. Когда я использую общую библиотеку, созданную из Java-кода с помощью собственного изображения, результат выполнения успешен или не удался в зависимости от среды выполнения. Когда результат выполнения не удался, функция graal_create_isolate возвращает 23. Я хотел бы знать, как найти значение этого значения 23.
В заголовке, сгенерированном командой Native-image (graal_isolate.h), указано «ненулевое значение в случае сбоя», но значение каждого значения не записано в этом заголовке. Пожалуйста, может кто-нибудь мне помочь? большое спасибо.
[среда выполнения и результат]
[результат выполнения]
[процесс сборки] javac Sample.java родное-изображение -o Пример --shared cl /I .\ .\main.c Sample.lib
[код]
import org.graalvm.nativeimage.IsolateThread;
import org.graalvm.nativeimage.c.function.CEntryPoint;
import org.graalvm.nativeimage.c.type.CCharPointer;
import org.graalvm.nativeimage.c.type.CTypeConversion;
public class Sample {
@CEntryPoint(name = "getCount")
private static int get_count(IsolateThread thread) {
return 1234;
}
}
#include <stdio.h>
#include <stdlib.h>
#include "Sample.h"
int main(void) {
graal_isolate_t *isolate = NULL;
graal_isolatethread_t *thread = NULL;
int ret = graal_create_isolate(NULL, &isolate, &thread);
if (ret != 0) {
fprintf(stderr, "initialization error(ret = %d)\n", ret);
return -1;
}
printf("count = %d\n", getCount(thread));
if (graal_tear_down_isolate(thread) != 0) {
fprintf(stderr, "shutdown error(ret = %d)\n", ret);
return -1;
}
return 0;
}
[создать среду]
Я ожидаю, что он будет работать в любой среде.




После внесения следующих изменений ошибка больше не возникает.
До:
javac Sample.java
native-image -o Sample --shared
cl /I .\ .\main.c Sample.lib
После:
javac Sample.java
native-image -o Sample --shared -march=compatibility
cl /I .\ .\main.c Sample.lib