Adding Julia and C++ examples

This commit is contained in:
timmonfette1
2018-02-24 17:30:21 -05:00
parent f12fbd3e42
commit 30999d4c78
9 changed files with 86 additions and 0 deletions

8
cpp-to-rust/Cargo.toml Normal file
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View File

@@ -0,0 +1,4 @@
#[no_mangle]
pub extern fn double_input(input: i32) -> i32 {
input * 2
}

View 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)