이런 일이 없으면 좋겠지만... .dll 파일로부터 이를 사용하기 위한 .lib 파일을 생성해야 할 때가 있다.
이럴 때의 정석(?)은 dumpbin.exe을 돌린 결과에서 일부 내용을 추출해서 lib.exe를 실행하는 것...
예를 들어, dumpbin.exe의 결과가 아래와 같이 나왔다면...
dumpbin.exe /exports mkl_rt.dll
[중간 생략]
18796 number of functions
18796 number of names
ordinal hint RVA name
1 0 000060E0 CAXPBY
2 1 00006600 CAXPY
3 2 00006F80 CAXPYI
4 3 00006890 CAXPY_DIRECT
5 4 00134CE0 CBBCSD
6 5 001353E0 CBDSQR
7 6 00007460 CCOPY
8 7 00007990 CDOTC
9 8 00008070 CDOTCI
10 9 000085A0 CDOTU
[이하 생략]
이를 이용해서 아래와 같은 mkl_rt.def 파일을 만든 뒤...
LIBRARY mkl_rt
EXPORTS
CAXPBY @1
CAXPY @2
CAXPYI @3
CAXPY_DIRECT @4
CBBCSD @5
CBDSQR @6
CCOPY @7
CDOTC @8
CDOTCI @9
CDOTU @10
아래와 같이 실행해서 .lib 파일을 만드는 것이다.
lib.exe /machine:x64 /def:mkl_rt.def
그리고, 이 .def 파일을 만드는 과정을 어느 현자께서 아주 깔끔하게 만들어서 배포해주셨다.
이 배치파일을 활용하면 .def 파일을 손쉽게 만들 수 있다.
그런데, .def 파일은 다른 방법으로도 만들 수 있다.
바로 MinGW-64에 포함된 gendef.exe를 활용하는 것.
gendef.exe mkl_rt.dll
어떤 방법이든 결과는 동일하다.