簡單型別,libc都有對應的不再贅述(沒有對應的bool型別),主要是 針對 struct 和 struct 陣列的互動
c型別rust型別
說明struct_name *
*mut struct_name
struct指標的轉換
結構體中的陣列
slice
見具體例子
struct指標 *有兩層意思:
1. 指向乙個struct物件
struct fiparam
;#define libdll extern "c" _declspec(dllexport)
//函式
libdll int fi_create(short nchannelnum, fiparam* pparam);
extern crate libc;
use libc::;
#[repr(c)]
pubstruct fiparam
//函式
#[link(name = "庫檔名(無字尾)")]
extern
呼叫let
mut param=box::new(fiparam
);let result: i32 = unsafe ;
struct fipoint
;struct fifacepos
;#define libdll extern "c" _declspec(dllexport)
//函式pfps指向的是陣列
libdll int fi_detect_face(short nchannelid, int bpp, int nwidth, int nheight, fifacepos* pfps, int nmaxfacenums, int nsamplesize = 640);
extern crate libc;
use libc::;
use std::mem;
#[repr(c)]
pubstruct fipoint
impl fipoint
}}#[repr(c)]
pubstruct fifacepos
impl fifacepos,//}}
}#[link(name = "庫檔名")]
extern
呼叫extern crate libc;
use libc::;
use std::mem;
let max_face_num=10;
let mut face_poses = vec::new();
for _ in
0..max_face_num
let face_num: i32 = unsafe ;
extern crate libc;
use libc::c_int;
#[no_mangle]
pubextern
"c"fn
rs_trigger(v1:c_int,v2:c_int) -> c_int
#ifdef _win64
#define __ext __declspec(dllexport)
#elif _win32
#define __ext __declspec(dllexport)
#else
#define __ext extern
#endif
//將dll拷貝到exe相同的目錄
#pragma comment (lib,"**/target/release/lib**.dll.lib")
#ifdef __cplusplus
extern "c"
//c++這個一定要加上
#endif
__ext int add(int v1, int v2);
add(1,2);
待續
只在windows 上進行測試,linux 未知
JS中簡單資料型別與複雜型別
簡單資料型別 null 返回的是乙個空的物件 object var timer null console.log typeof timer 如果有個變數我們以後打算儲存為物件,暫時沒想好放啥,這個時候就給 null 棧 棧的特點是先進後出的 我們可把棧看成乙個桶先進來的壓在桶的最下方 後進來的在桶的...
C 中理解乙個複雜型別變數的真實含義
在c 中有時會遇到定義的比較複雜的變數,比如說指標和引用的符合型別。這時我們可以用從內到外,從左到右的方法去閱讀這個變數的方法搞清它的真實含義。int val1 3 int p1 val1 說明 p1 是乙個指標,p1指向了val1,int說明val1 是int型的 int val2 val1 同理...
在C 環境中與Lua進行互動(二)
在c 環境中與lua進行互動 二 1.lua和 c 中型別的對應 nil null string system.string number system.double boolean system.boolean table luainte ce.luatable function luainte ...