게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
rust로 빌드한 dll을 윈도 프로젝트에서 사용할 수 있나요?
게시물ID : programmer_19265짧은주소 복사하기
작성자 : 황금비
추천 : 0
조회수 : 1163회
댓글수 : 1개
등록시간 : 2016/12/10 03:12:28
안녕하세요.
오유에서 rust라는 언어를 알게 되었고 장점이 많은 언어라 생각이 되어서 제가 참여하고 있는 게임 프로젝트에 사용할 수  있는 지 연구 중입니다.

cargo로 생성한 라이브러리 프로젝트에 다음 과 같이 설정하고
[package]
...
[lib]
name = "stlibapp"
path = "src/lib.rs"
crate-type = ["dylib"]
..

lib.rs에 hello world를 출력하는 간단한 프로그램을 넣었습니다.

#[no_mangle]
pub extern fn helloworld() {
println!("hello world");
}

빌드 하면 dll이 만들어 집니다.

test program에서  다음과 같이 작성하고 실행을 하면
char dll_file[] = "rust_library1.dll";
HMODULE h_dll = LoadLibrary(dll_file);
if(NULL == h_dll)
{
printf("Error\n");
}

%1은(는) 올바른 Win32 응요 프로그램이 아닙니다. 라고 출력됩니다.

혹시나 해서  dumpbin /exports 로 조사해 보면

... 00001090 helloworld = helloworld

가 있습니다.

그런데 비주얼 스튜디오에서 dll을 만들면 함수는 맹글링 때문에 ?함수이름@... 으로 시작 되는데 rust로 빌드한 것은 이런 맹글링이 안보입니다.

그래서 혹시나 해서 조사해보니 rust로 빌드한 dll은 MinGW 프로젝트에서 만 사용할 수 있다고 하는데 정말 그런지 궁금합니다.

그리고 visual studio에 뽑은 dll을 dumpbin으로 보면 정말 간단한데 rust로 빌드한 것을 보면 수천 줄 나옵니다. 이게 정상인지 또한 궁금합니다.
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호