Merge pull request #14 from timmonfette1/master
Adding Julia and C++ examples
This commit is contained in:
8
cpp-to-rust/Cargo.toml
Normal file
8
cpp-to-rust/Cargo.toml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
[package]
|
||||||
|
name = "cpp-to-rust"
|
||||||
|
version = "0.1.0"
|
||||||
|
authors = ["timmonfette1 <monfette.timothy@gmail.com>"]
|
||||||
|
|
||||||
|
[lib]
|
||||||
|
name = "double_input"
|
||||||
|
crate-type = ["dylib"]
|
||||||
16
cpp-to-rust/Makefile
Normal file
16
cpp-to-rust/Makefile
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
ifeq ($(shell uname),Darwin)
|
||||||
|
EXT := dylib
|
||||||
|
else
|
||||||
|
EXT := so
|
||||||
|
endif
|
||||||
|
|
||||||
|
all: target/debug/libdouble_input.$(EXT)
|
||||||
|
g++ src/main.cpp -L ./target/debug/ -ldouble_input -o run
|
||||||
|
LD_LIBRARY_PATH=./target/debug/ ./run
|
||||||
|
|
||||||
|
target/debug/libdouble_input.$(EXT): src/lib.rs Cargo.toml
|
||||||
|
cargo build
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf target
|
||||||
|
rm -rf run
|
||||||
13
cpp-to-rust/src/example.h
Normal file
13
cpp-to-rust/src/example.h
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
#ifndef _EXAMPLE_H
|
||||||
|
#define _EXAMPLE_H
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C"{
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int double_input(int input);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
4
cpp-to-rust/src/lib.rs
Normal file
4
cpp-to-rust/src/lib.rs
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
#[no_mangle]
|
||||||
|
pub extern fn double_input(input: i32) -> i32 {
|
||||||
|
input * 2
|
||||||
|
}
|
||||||
12
cpp-to-rust/src/main.cpp
Normal file
12
cpp-to-rust/src/main.cpp
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
#include <iostream>
|
||||||
|
#include "example.h"
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int input = 10;
|
||||||
|
int output = double_input(input);
|
||||||
|
cout<<input<<" * 2 = "<<output<<"\n";
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
8
julia-to-rust/Cargo.toml
Normal file
8
julia-to-rust/Cargo.toml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
[package]
|
||||||
|
name = "julia-to-rust"
|
||||||
|
version = "0.1.0"
|
||||||
|
authors = ["timmonfette1 <monfette.timothy@gmail.com>"]
|
||||||
|
|
||||||
|
[lib]
|
||||||
|
name = "double_input"
|
||||||
|
crate-type = ["dylib"]
|
||||||
14
julia-to-rust/Makefile
Normal file
14
julia-to-rust/Makefile
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
ifeq ($(shell uname),Darwin)
|
||||||
|
EXT := dylib
|
||||||
|
else
|
||||||
|
EXT := so
|
||||||
|
endif
|
||||||
|
|
||||||
|
all: target/debug/libdouble_input.$(EXT)
|
||||||
|
julia src/main.jl
|
||||||
|
|
||||||
|
target/debug/libdouble_input.$(EXT): src/lib.rs Cargo.toml
|
||||||
|
cargo build
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf target
|
||||||
4
julia-to-rust/src/lib.rs
Normal file
4
julia-to-rust/src/lib.rs
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
#[no_mangle]
|
||||||
|
pub extern fn double_input(input: i32) -> i32 {
|
||||||
|
input * 2
|
||||||
|
}
|
||||||
7
julia-to-rust/src/main.jl
Normal file
7
julia-to-rust/src/main.jl
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
input = Int32(10)
|
||||||
|
output = ccall((:double_input, "target/debug/libdouble_input"),
|
||||||
|
Int32, (Int32,), input)
|
||||||
|
|
||||||
|
print(input)
|
||||||
|
print(" * 2 = ")
|
||||||
|
println(output)
|
||||||
Reference in New Issue
Block a user