- Rust 项目一旦增大,用
cargo new demo创建的单一包,单个 src/main.rs 的项目组织方式不能满足需求了$ cargo new demo
比如至少要一个 src/lib.rs 文件吧,复杂些还需在 src 目录中创建模块层次的目录; 更大型项目还要在 Package 上边创建 Workspace。
$ tree demo
demo
├── Cargo.toml
└── src
└── main.rs
这里就引出了 Rust 项目的几个概念,即 Package, Crate, 模块,以及 Workspace,再就是如何在代码中引用不同 Package, Crate, 模块中的资源要用到路径。 Read More
在始终是 C/C++ 有着更优越性能的情况下,因而之前介绍过多种 其他不同的语言如何加载使用 C/C++ 写的动态库,有 Go, Python, Java 和 C#。在学习 Rust 之时也有类似的需求。本文的做法是要用到第三方库 libloading,这里将参考官方的例子。
先来创建一个动态库,使用和 Go 调用 C 写的动态库完整例子(Linux版) 一文中相同的例子,add.c 代码内容如下在 Linux 中使用如下命令编译出 libadd.so 动态库文件 Read More1#include <string.h> 2#include <stdio.h> 3#include <stdlib.h> 4char* add(char* src, int n) 5{ 6 char str[20]; 7 sprintf(str, "%d", n); 8 char *result = malloc(strlen(src)+strlen(str)+1); 9 strcpy(result, src); 10 strcat(result, str); 11 return result; 12}