从Windows链接到Rust的MariaDB C连接器失败

时间:2015-08-19 12:18:38

标签: windows linker mingw rust mariadb

我目前正在开发一个Rust项目,需要我连接到MariaDB服务器。我决定为官方提供的C连接器创建Rust绑定,这在Linux中运行得很好,但在Windows上却不行。

由于只提供MSVC二进制文件作为下载,由于Microsft链接器和用于Rust的MinGW链接器之间的链接器问题导致程序在调用第一个函数时崩溃,因此无效自己编译mariadb源代码,但即使MinGW下的编译应该在mariadb的2.0版本中工作,它也会失败

  

错误:ssize_t的冲突类型
  typedef SSIZE_T ssize_t

因为它已经在另一个文件中定义,当我试图简单地删除重新定义时,发生了其他错误。

我尝试使用mingw-w64-mariadb-connector-c package从Arch交叉编译它,它没有显示连接器的任何编译错误,但是当我在Windows上测试二进制文件时,它会抛出一个未定义的引用链接错误我的C函数声明,如下所示:

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

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

我也尝试了this对mysql-c-connector的建议,但是出现了相同的链接器错误。

我正在使用最新的防锈夜蛾和MinGW-w64 v4.9.1(与夜间相同的版本),均为32位。

0 个答案:

没有答案