2312d,d语言作为胶水,用C++调用rust

原理
源码:

//主.cpp
void foo();
int()
{
   
    foo();0;
}

编译r.rs(被调用函数)文件:

//r.rs编译命令.
rustc --target i686-pc-windows-msvc r.rs --crate-type staticlib 
//r.rs文件内容,生成r.lib(11.2M)有点大.
//用要staticlib.否则不行.
//如果没有`i686-pc-windows-msvc`,会提示你下载.
pub fn foo() {
   
    println!("Hello from Rust");
}

中间的d胶水代码:

//g.d
@nogc:
pragma(mangle, "_ZN1r3foo17h9ff7108a58612db8E") void foo_from_rust();
//从r.rs里面可以找到foo的混杂.
extern(C++) void foo()
{
   
    foo_from_rust();
}//按C++的foo调用.

正常编译main.cppmain.obj
编译胶水dmd -c g.dg.obj.
然后用

link *.obj r.lib 一堆常见的lib
//常见的lib为平时编译C++的lib.

连接,注意加上不常见的两个lib:

userenv.lib ntdll.lib

然后就可以链接为exe,得到g.exe,再运行:

|| Hello from Rust

即,可以从C++方调用Rust.

相关推荐

  1. 2312d,d语言作为胶水,C++调用rust

    2023-12-16 08:44:04       43 阅读
  2. 2312d,d语言来绑定C++和rust

    2023-12-16 08:44:04       40 阅读
  3. 2312d,d语言调用C++的类

    2023-12-16 08:44:04       46 阅读
  4. 2312d,d调用中文C++库

    2023-12-16 08:44:04       45 阅读
  5. C 语言模拟 Rust 的 Box 类型

    2023-12-16 08:44:04       20 阅读
  6. Leetcode | 231. 2 的幂 C语言

    2023-12-16 08:44:04       36 阅读

最近更新

  1. Ubuntu 下 Docker安装 2024

    2023-12-16 08:44:04       0 阅读
  2. C#中序列化和反序列化

    2023-12-16 08:44:04       0 阅读
  3. 微服务节流阀:Eureka中服务限流策略的精妙实现

    2023-12-16 08:44:04       0 阅读
  4. LVS集群

    LVS集群

    2023-12-16 08:44:04      0 阅读
  5. 力扣 设计链表707

    2023-12-16 08:44:04       1 阅读

热门阅读

  1. Linux 服务器使用 ssh 密钥登录

    2023-12-16 08:44:04       40 阅读
  2. Spring Mybatis随记

    2023-12-16 08:44:04       40 阅读
  3. Mac下ERROR: Cannot connect to the Docker daemon

    2023-12-16 08:44:04       43 阅读
  4. BOOST_MP11_VERSION宏用法的测试程序

    2023-12-16 08:44:04       46 阅读
  5. Excel高频函数合集

    2023-12-16 08:44:04       33 阅读
  6. hive中如何求取中位数?

    2023-12-16 08:44:04       41 阅读