lib를 dll로 만드는 방법?
2009/03/11 09:17
lib는 static link library고 dll은 dinamic link library다. 라이브러리로 만들어진 소스는 빌드할 때 옵션에 따라서 lib 또는 dll이 될 수 있다.주1
자기가 소스를 가지고 있는 경우라면 그렇지만, 만약 배포받은 lib를 dll로 만들어 쓰고 싶으면 어떻게 해야할까.
결론부터 얘기하자면, lib는 dll로 만들 수 없다. lib의 함수를 dll로 노출시키려면 몇가지 작업을 더 해야한다.
lib에 다음과 같은 함수가 있다고 해보자.
extern "C" int func(char *b);
그렇다면 다음과같은 wrapping 함수를 만들고, 그것을 dll로 노출시켜야 한다.
extern "C" __declspec(dllexport) int func_wrap(char *b) {
return func(b);
}
Create DLL from LIB - HowTo ?에 따르면 이렇다:
This is because the library and the dll have different linkage. I tried giving dllexport linkage to the lib version but it loses it along the way, so the only way to get this to work is to wrap it so there is one physically in the dll and it has export linkage.
이 방법을 이용하면 lib를 이용해 dll을 만들 수는 있지만, dll로 노출되는 함수의 이름이 lib의 그것과 달라진다는 단점이 있다.
"CodeSnipet" 카테고리의 다른 글
- 2009/04/01.NET에서 제공하는 Code Page 목록 [0]
- 2009/03/24C# 사용자 정의 형식 변환 연산자 [0]
- 2009/03/11lib를 dll로 만드는 방법? [0]
- 2009/03/04내가 작성한 .NET 프로그램, 어떤 버전의 framewor... [0]
- 2009/03/02C#, namespace 계층 적용 [0]

