Rust 碘化银在防锈剂中的应用

Rust 碘化银在防锈剂中的应用,rust,rust-cargo,Rust,Rust Cargo,我正试图通过一个Rust应用程序(不要问我为什么…)连接到FileMaker,我遇到了针对iodbc而不是unixodbc构建的FM ODBC驱动程序墙,但我发现所有ODBC机箱都使用unixodbc 我不太熟悉货物周围的底层内容,所以我不知道是否以及如何使生锈的odbc板条箱与iodbc而不是unixodbc连接。我问了谷歌,结果一无所获 我是否可以强制cargo链接到特定的库(系统上同时存在unixodbc和iodbc,但默认情况下总是选择unixodbc)?目前所有Rusts ODBC板条

我正试图通过一个Rust应用程序(不要问我为什么…)连接到FileMaker,我遇到了针对iodbc而不是unixodbc构建的FM ODBC驱动程序墙,但我发现所有ODBC机箱都使用unixodbc

我不太熟悉货物周围的底层内容,所以我不知道是否以及如何使生锈的odbc板条箱与iodbc而不是unixodbc连接。我问了谷歌,结果一无所获


我是否可以强制cargo链接到特定的库(系统上同时存在unixodbc和iodbc,但默认情况下总是选择unixodbc)?

目前所有Rusts ODBC板条箱都使用
ODBC sys
绑定到本机库。
-sys
后缀是社区中系统绑定的惯用名称。我碰巧是
odbc sys
的所有者,因此在遇到您的问题时,我冒昧地添加了
iodbc
功能。在撰写本文时,以下内容应适用于您的货物舱:

[dependencies]
odbc-api = "0.19.2"
odbc-sys = { version = "0.17.2", features = ["iodbc"] }

如果不指定功能,将不会拾取
iodbc
,因为动态库的名称为
libiodbc.so
而不是
libodbc.so

如果使用
c
并手动链接iodbc,我相信这是可能的。一、 不过,我的知识还不够渊博,不知道如何做到这一点,尽管使用详细的输出可能会给您一个想法。@Aiden4可能会尝试,如果我没有找到其他解决方案。虽然我甚至不确定这三个或四个odbc包中哪一个是真正链接到C库的:-/如果它是静态链接的,您可能可以通过查看cargo.lock中odbc板条箱的依赖项来判断是哪一个进行了链接。此外,如果这不起作用,请查找带有
extern“C”
功能的板条箱。太棒了,谢谢。我会给它一个旋转虽然现在它的低优先级,因为一个最后期限,我必须实现它使用JDBC和java,而不是保持最后期限。但我更愿意用Rust而不是Java。别担心。我只需要在odbc sys中添加for行,我希望它对其他人也有一些用处。如果您尝试一下,您很可能是第一个将驱动程序管理器与Rust绑定一起使用的人,这意味着您将租用一些未知的区域。因此,如果遇到麻烦,请毫不犹豫地在GitHub上提出问题。