안녕하세요.
오유에서 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로 빌드한 것을 보면 수천 줄 나옵니다. 이게 정상인지 또한 궁금합니다.