Я пытаюсь написать расширение DLL для ArmA 3 и game docs говорят:Как реализовать функцию RVExtension для DLA ArmA 3 в Rust?
DLL, как ожидается, содержит точку входа в виде _RVExtension @ 12, со следующей подписью C:
void __stdcall RVExtension(char *output, int outputSize, const char *function);
часть кода примера C++ является:
// ...
extern "C" {
__declspec(dllexport) void __stdcall RVExtension(
char *output,
int outputSize,
const char *function
);
};
void __stdcall RVExtension(
char *output,
int outputSize,
const char *function
) {
outputSize -= 1;
strncpy(output,function,outputSize);
}
Документов также много примеров на других языках, таких как: C#, D and even Pascal, но это мне не очень помогают, потому что у меня нет хорошего понимания их FFI = (.
Я застрял со следующим кодом Rust:
#[no_mangle]
pub extern "stdcall" fn RVExtension(
game_output: *mut c_char,
output_size: c_int,
game_input: *const c_char
) {
// ...
}
Но ArmA отказывается назвать его.
Любые идеи о том, как сделать то же самое с Mingw? Кажется, что-то похожее (https://forums.bistudio.com/topic/193084-building-extensions-on-mingw/?p=3073069) – xbelanch
Извините, у меня нет опыта работы с MinGW. – Ridim