programing

Windows에서 Rust에서 MariaDBC Connector로의 링크가 실패함

javajsp 2023. 9. 21. 20:06

Windows에서 Rust에서 MariaDBC Connector로의 링크가 실패함

저는 현재 마리아DB 서버에 접속해야 하는 러스트 프로젝트를 진행 중입니다.저는 공식적으로 제공되는 C 커넥터에 대해 Rust 바인딩을 만들기로 결정했습니다. 이것은 리눅스에서는 잘 작동하지만 윈도우에서는 잘 작동하지 않습니다.

MSVC-binary만 다운로드로 제공되기 때문에 첫 번째 함수가 호출되면 프로그램이 다운되는 Microsoft 링커와 Rust에 사용되는 MinGW 링커 간의 링커 문제로 인해 작동하지 않습니다. miaadb 소스를 직접 컴파일하려고 했지만 mi.0 릴리즈 기준으로 MinGW 아래의 컴파일이 작동해야 함에도 불구하고riadb, 그것은 실패합니다.

오류: ssize_t에 대해 유형이 충돌합니다.
typedef SSSIZE_Tsize_t

이미 다른 파일에 정의되어 있고, 단순히 재정의를 제거하려고 했을 때 다른 오류가 발생했습니다.

mingw-w64-mariadb-connector-c 패키지를 사용하여 Arch에서 교차 컴파일을 시도했는데 커넥터에 대한 컴파일 오류가 나타나지 않았지만 윈도우에서 이진 파일을 테스트했을 때 다음과 같은 모든 C-Function 선언에 대해 정의되지 않은 참조 링크 오류가 발생했습니다.

extern crate libc;
use self::libc::{c_int, /*...*/};

#[link(name="mariadb", kind="dylib")]
extern {
    pub fn mysql_init(mysql: *const MYSQL) -> c_int;
    // ...
}

mysql-c-connector에 대해서도 이 제안을 시도해 보았지만, 동일한 linker 오류가 나타났습니다.

나는 최신 러스트 나이트리스와 MinGW-w64 v4.9.1(나이트리스와 동일한 버전)을 모두 32비트로 사용하고 있습니다.

언급URL : https://stackoverflow.com/questions/32095326/linking-to-the-mariadb-c-connector-from-rust-fails-on-windows