일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 스타크래프트2
- FFI
- c언어
- 윈도우7
- qt 설치
- 오토바이
- Qt 소켓프로그래밍
- 이륜차
- 양평역
- 디자이어HD
- 바이크
- 자바
- Qt4
- QTcpServer
- 재귀함수
- 마영전
- Qt OpenGL
- 정성하
- 안드로이드
- 스타2
- android SAF
- 고속도로
- 잡담
- vuejs
- 자료구조
- QT
- HTML
- 엑티브엑스
- Java
- 알람프로그램
- Today
- Total
목록FFI (2)
프로그래밍과 잡담
C#에서 Rust 에서 만든 메소드를 호출 하는데 예를 들어 아래와 같은걸 호출한다고 치자. // 문자열 배열을 받아서 문자열 배열을 반환하는 함수임. C#으로 따지면 string[] 이거임. // 근데 이걸 반환하기가 넘 어려움. fn foo(bar: &[*const c_char] ) -> &[*const c_char] 문제는 다른 언어에서 이걸 호출 하면 졸라 어렵다는거다. 왜냐하면 문자열 배열이란게 C언어로 치면 char** 이 거랑 비슷하다. 그러다보니 서로 통신하기가 아주 지랄맞아. 이건 Go 도 마찮가지다. 단순 문자열은 잘 가지만 문자열 배열이 들어가는 순간 지랄이 나는거야. 그냥 때려치우고 하나의 문자열로 만들어서 보낼려고 한다. 그리고 처리하는 쪽도 받은걸 잘라서 처리한 다음에 다시 하나..
Rust 언어는 프로그래머가 일일이 메모리 관리에 골머리를 쌓으면서 처리 안해도 돼는 좋은 언어이다. 게다가 성능도 C++와 비슷하거나 빠르다. 하지만 이 좋은 기능을 Rust 에서만 사용해서는 안됀다. C언어나 C++ 처럼 다른 언어에서도 사용 할 수 있어야, 그 언어의 진가가 발휘 할 수 있을 것이다. 왜냐 일반적으로 가비지 컬렉션을 사용하는 자바나 C# 또는 인터프리터 언어들(python, ruby 등등등)은 바이너리 언어 비해서 성능이 떨어지는 편이다. 요즘은 많이 좋아졌다고는 하지만 1분 1초가 중요하게 생각하는 분야에서는 여전히 C/C++이 대세이다. 당연하게도 rust에서는 이 기능을 제공하고 있다. 콘솔을 열고 아래와 비슷한 rust 프로젝트를 생성한다. $cargo new myfunc 그..