小编Rid*_*dim的帖子

如何在Rust中实现ArmA 3 DLL的RVExtension函数?

我正在尝试为ArmA 3编写DLL扩展,游戏文档说:

dll应包含_RVExtension @ 12格式的入口点,并带有以下C签名:

void __stdcall RVExtension(char *output, int outputSize, const char *function);
Run Code Online (Sandbox Code Playgroud)

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);
}
Run Code Online (Sandbox Code Playgroud)

文档在其他语言中也有很多例子:C#,D甚至是Pascal,但是那些对我没什么帮助,因为我对他们的FFI =没有很好的理解.

我坚持使用以下Rust代码:

#[no_mangle]
pub extern "stdcall" fn RVExtension(
    game_output: *mut c_char,
    output_size: c_int,
    game_input: *const c_char
) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

但ArmA拒绝称呼它.

c++ ffi rust

4
推荐指数
1
解决办法
740
查看次数

标签 统计

c++ ×1

ffi ×1

rust ×1