首页 > 解决方案 > 如何在板条箱中的二进制文件和 cdylib 之间共享代码?

问题描述

我正在构建一个挂钩一些 Windows 事件的应用程序。钩子代码必须在 DLL 中才能工作。我[lib]crate-type = ["cdylib"]in设置Cargo.toml并在main.rs.

│   Cargo.toml
│
└───src
        lib.rs
        main.rs

有用。

我想添加第二个二进制文件,所以使用这个结构:

└───src
    │   lib.rs
    │
    └───bin
            bin1.rs
            bin2.rs

有用。

bin1.rs并且bin2.rs有一些我想移动到新app.rs模块的重复代码,所以我试试这个:

└───src
    │   lib.rs
    │
    └───bin
            app.rs
            bin1.rs
            bin2.rs

这会导致错误'main' function not found in crate 'app'。这是因为其中的所有文件bin都应该被构建为二进制文件。

我搬出app.rsbin尝试不同的结构:

└───src
    │   lib.rs
    │   app.rs
    │
    └───bin
            bin1.rs
            bin2.rs

使用该结构,bin1.rs并且bin2.rs无法访问app.rs.

通常共享代码会进入lib.rs,但那是我的 DLL。

这种情况应该如何处理?

标签: rustrust-cargo

解决方案


推荐阅读