Q&A

  • .lib 화일 만드는 법좀 가르쳐주세요....
안녕하세요.

델파이 초보자입니다.



다름아니고, .lib화일을 만들고 싶은데 만드는 방법을 모르겠습니다.

고수님들의 한 수 지도 부탁드립니다.



그리고, 질문이 한가지 있는데요...

.dll과 .lib의 차이점을 알고 싶습니다.



그럼 부탁드리겠습니다

3  COMMENTS
  • Profile
    김정 2000.10.18 08:07
    안녕하세요?

    고드름 김정입니다.



    컴파일 프로그래밍에서 실행 파일을 만들기 위해서는 두 단계를 거칩니다.

    Compile 과 Link 입니다.

    1.컴파일은 소스 코드는 2진형태의 목적코드(object 혹은 library)로 만들며,

    2.링크는 목적 코드들을 합쳐서 실행파일을 만듭니다.

    이때, 소스에서 부르려는 함수이름과 실제 함수가 구현된 곳을 연결시켜줍니다.

    이런 과정을 Binding 과정이라고 부릅니다.



    컴파일러가 발달하면서, Link(Bind)과정이 동적으로 가능하게 되었습니다.

    이전에는 Library 형태로 함수가 실행파일과 함께 더해졌었습니다.

    따라서 용량도 커지고, 그만큼 메모리도 많이 차지하고,

    프로그램들 간에도 같은 기능이 겹쳐서 사용되고는 했습니다.



    동적 링크란 것은 실행 파일 밖에 구현된 함수가 제공되어,

    실행파일이 실제로 실행될때 필요할때만 불리는 것을 말합니다.



    DLL( Dynamic Link Library )는 바로 이런 역할을 합니다.

    여러 실행 파일들이 함께 사용할 수 있는 함수들이 들어 있습니다.



    윈도우즈 자체도 수많은 DLL을 제공하고 있습니다.

    실제 API들도 DLL에 들어있기 때문에 델파이도 자유롭게 불러쓰고 있는 겁니다.



    VC의 경우, VClib 디렉토리 아래에 제공되는 DLL의 lib 파일을 함께 배포합니다.

    링크가 lib안에 있는 함수정보를 봐야만 실행파일을 만들 수 있기 때문입니다.

    또한 VC에서 DLL을 제작하면 자동으로 lib 파일이 생성됩니다.



    하지만 Delphi의 경우는 특별하게도 DLL을 만들어도 lib 파일이 생성되지 않습니다.

    물론 DLL 을 사용하려고 해도 lib 파일이 필요없습니다.

    단지 Unit interfaces 내부에 선언해주고, implementation 내부에 DLL 함수명만쓰면,

    실행파일이 DLL을 자동(?)으로 연결시킵니다.



    하지만 DLL 파일만 가지고도 해당 lib를 만들 수도 있습니다.

    C-builder의 경우, VC와 lib파일의 구조가 다르기 때문에

    DLL에서 새롭게 CB용 lib파일을 생성해야 링크가 가능합니다.



    VC에도 그런 툴이 있는 걸로 압니다만, (사용한적은 없습니다...)

    만약 델파이에서 작성한 DLL을 사용하려면 동적 링크 방법을 사용하면 됩니다.



    VC에서 DLL 동적 연결 방법은 VC 책을 참고하세요.

    델파이 서적에서도 같은 API로 구현된 예를 찾으실 수 있을 겁니다.



    그럼.



    홍진혁 wrote:

    > 안녕하세요.

    > 델파이 초보자입니다.

    >

    > 다름아니고, .lib화일을 만들고 싶은데 만드는 방법을 모르겠습니다.

    > 고수님들의 한 수 지도 부탁드립니다.

    >

    > 그리고, 질문이 한가지 있는데요...

    > .dll과 .lib의 차이점을 알고 싶습니다.

    >

    > 그럼 부탁드리겠습니다

  • Profile
    홍진혁 2000.10.18 10:18
    김정님, 고맙습니다.



    제가 가지고 있는 고민은 다음과 같습니다.

    이전에 Fortran으로 짠 대형 코드와 더불어 Shared Memory를 가지고 변수의 현재 값들을 Delphi로 구현된 툴로 그래프 (2차원, 3차원)으로 표현하고자 하는데요...

    Delphi에서는 DLL로 그래프 툴은 만들었지만 Fortran에서는 DLL을 바로 Export하여 사용하지를 못하더군요.

    그러나 lib화일은 include하여 사용이 가능하다고 합니다.

    따라서 Delphi로 만든 DLL을 .lib로 만드는 방법을 좀 알고 싶은데 Text를 찻아봐도 그런 것은 나오지 않더군요....



    좀 급한 프로젝트라 그런데 좀 자세히 가르쳐 줄수 있나요?



    부탁드립니다.





    김정 wrote:

    > 안녕하세요?

    > 고드름 김정입니다.

    >

    > 컴파일 프로그래밍에서 실행 파일을 만들기 위해서는 두 단계를 거칩니다.

    > Compile 과 Link 입니다.

    > 1.컴파일은 소스 코드는 2진형태의 목적코드(object 혹은 library)로 만들며,

    > 2.링크는 목적 코드들을 합쳐서 실행파일을 만듭니다.

    > 이때, 소스에서 부르려는 함수이름과 실제 함수가 구현된 곳을 연결시켜줍니다.

    > 이런 과정을 Binding 과정이라고 부릅니다.

    >

    > 컴파일러가 발달하면서, Link(Bind)과정이 동적으로 가능하게 되었습니다.

    > 이전에는 Library 형태로 함수가 실행파일과 함께 더해졌었습니다.

    > 따라서 용량도 커지고, 그만큼 메모리도 많이 차지하고,

    > 프로그램들 간에도 같은 기능이 겹쳐서 사용되고는 했습니다.

    >

    > 동적 링크란 것은 실행 파일 밖에 구현된 함수가 제공되어,

    > 실행파일이 실제로 실행될때 필요할때만 불리는 것을 말합니다.

    >

    > DLL( Dynamic Link Library )는 바로 이런 역할을 합니다.

    > 여러 실행 파일들이 함께 사용할 수 있는 함수들이 들어 있습니다.

    >

    > 윈도우즈 자체도 수많은 DLL을 제공하고 있습니다.

    > 실제 API들도 DLL에 들어있기 때문에 델파이도 자유롭게 불러쓰고 있는 겁니다.

    >

    > VC의 경우, VClib 디렉토리 아래에 제공되는 DLL의 lib 파일을 함께 배포합니다.

    > 링크가 lib안에 있는 함수정보를 봐야만 실행파일을 만들 수 있기 때문입니다.

    > 또한 VC에서 DLL을 제작하면 자동으로 lib 파일이 생성됩니다.

    >

    > 하지만 Delphi의 경우는 특별하게도 DLL을 만들어도 lib 파일이 생성되지 않습니다.

    > 물론 DLL 을 사용하려고 해도 lib 파일이 필요없습니다.

    > 단지 Unit interfaces 내부에 선언해주고, implementation 내부에 DLL 함수명만쓰면,

    > 실행파일이 DLL을 자동(?)으로 연결시킵니다.

    >

    > 하지만 DLL 파일만 가지고도 해당 lib를 만들 수도 있습니다.

    > C-builder의 경우, VC와 lib파일의 구조가 다르기 때문에

    > DLL에서 새롭게 CB용 lib파일을 생성해야 링크가 가능합니다.

    >

    > VC에도 그런 툴이 있는 걸로 압니다만, (사용한적은 없습니다...)

    > 만약 델파이에서 작성한 DLL을 사용하려면 동적 링크 방법을 사용하면 됩니다.

    >

    > VC에서 DLL 동적 연결 방법은 VC 책을 참고하세요.

    > 델파이 서적에서도 같은 API로 구현된 예를 찾으실 수 있을 겁니다.

    >

    > 그럼.

    >

    > 홍진혁 wrote:

    > > 안녕하세요.

    > > 델파이 초보자입니다.

    > >

    > > 다름아니고, .lib화일을 만들고 싶은데 만드는 방법을 모르겠습니다.

    > > 고수님들의 한 수 지도 부탁드립니다.

    > >

    > > 그리고, 질문이 한가지 있는데요...

    > > .dll과 .lib의 차이점을 알고 싶습니다.

    > >

    > > 그럼 부탁드리겠습니다

  • Profile
    김정 2000.10.18 19:21
    안녕하세요?

    고드름 김정입니다.



    DLL을 동적링크 방식으로 사용하시면 될 것 같습니다.

    VC에서 사용하는 방식을 알려드리겠습니다.

    ( VC도 Library가 필요하지만, 다음 방법은 없이 할 수 있는 방법입니다.

    포트란이 어떤 버전인지 모르겠지만, WIN32 API는 사용하실 수 있겠죠?? )



    1.함수포인터형을 선언합니다.

    typedef void (FAR PASCAL *PMailStart)(void);



    2.함수포인터형 변수를 만듭니다.

    PMailStart MailStart;



    3.DLL를 불러옵니다.

    theDLL = LoadLibrary("project1.dll");



    4.함수를 찾아서 Bind해줍니다.

    MailStart = (PMailStart)GetProcAddress((HMODULE)theDLL, "MailStart");



    5. MailStart() 함수를 사용하시면 됩니다.



    참고하세요.

    그럼.



    홍진혁 wrote:

    > 김정님, 고맙습니다.

    >

    > 제가 가지고 있는 고민은 다음과 같습니다.

    > 이전에 Fortran으로 짠 대형 코드와 더불어 Shared Memory를 가지고 변수의 현재 값들을 Delphi로 구현된 툴로 그래프 (2차원, 3차원)으로 표현하고자 하는데요...

    > Delphi에서는 DLL로 그래프 툴은 만들었지만 Fortran에서는 DLL을 바로 Export하여 사용하지를 못하더군요.

    > 그러나 lib화일은 include하여 사용이 가능하다고 합니다.

    > 따라서 Delphi로 만든 DLL을 .lib로 만드는 방법을 좀 알고 싶은데 Text를 찻아봐도 그런 것은 나오지 않더군요....

    >

    > 좀 급한 프로젝트라 그런데 좀 자세히 가르쳐 줄수 있나요?

    >

    > 부탁드립니다.

    >

    >

    > 김정 wrote:

    > > 안녕하세요?

    > > 고드름 김정입니다.

    > >

    > > 컴파일 프로그래밍에서 실행 파일을 만들기 위해서는 두 단계를 거칩니다.

    > > Compile 과 Link 입니다.

    > > 1.컴파일은 소스 코드는 2진형태의 목적코드(object 혹은 library)로 만들며,

    > > 2.링크는 목적 코드들을 합쳐서 실행파일을 만듭니다.

    > > 이때, 소스에서 부르려는 함수이름과 실제 함수가 구현된 곳을 연결시켜줍니다.

    > > 이런 과정을 Binding 과정이라고 부릅니다.

    > >

    > > 컴파일러가 발달하면서, Link(Bind)과정이 동적으로 가능하게 되었습니다.

    > > 이전에는 Library 형태로 함수가 실행파일과 함께 더해졌었습니다.

    > > 따라서 용량도 커지고, 그만큼 메모리도 많이 차지하고,

    > > 프로그램들 간에도 같은 기능이 겹쳐서 사용되고는 했습니다.

    > >

    > > 동적 링크란 것은 실행 파일 밖에 구현된 함수가 제공되어,

    > > 실행파일이 실제로 실행될때 필요할때만 불리는 것을 말합니다.

    > >

    > > DLL( Dynamic Link Library )는 바로 이런 역할을 합니다.

    > > 여러 실행 파일들이 함께 사용할 수 있는 함수들이 들어 있습니다.

    > >

    > > 윈도우즈 자체도 수많은 DLL을 제공하고 있습니다.

    > > 실제 API들도 DLL에 들어있기 때문에 델파이도 자유롭게 불러쓰고 있는 겁니다.

    > >

    > > VC의 경우, VClib 디렉토리 아래에 제공되는 DLL의 lib 파일을 함께 배포합니다.

    > > 링크가 lib안에 있는 함수정보를 봐야만 실행파일을 만들 수 있기 때문입니다.

    > > 또한 VC에서 DLL을 제작하면 자동으로 lib 파일이 생성됩니다.

    > >

    > > 하지만 Delphi의 경우는 특별하게도 DLL을 만들어도 lib 파일이 생성되지 않습니다.

    > > 물론 DLL 을 사용하려고 해도 lib 파일이 필요없습니다.

    > > 단지 Unit interfaces 내부에 선언해주고, implementation 내부에 DLL 함수명만쓰면,

    > > 실행파일이 DLL을 자동(?)으로 연결시킵니다.

    > >

    > > 하지만 DLL 파일만 가지고도 해당 lib를 만들 수도 있습니다.

    > > C-builder의 경우, VC와 lib파일의 구조가 다르기 때문에

    > > DLL에서 새롭게 CB용 lib파일을 생성해야 링크가 가능합니다.

    > >

    > > VC에도 그런 툴이 있는 걸로 압니다만, (사용한적은 없습니다...)

    > > 만약 델파이에서 작성한 DLL을 사용하려면 동적 링크 방법을 사용하면 됩니다.

    > >

    > > VC에서 DLL 동적 연결 방법은 VC 책을 참고하세요.

    > > 델파이 서적에서도 같은 API로 구현된 예를 찾으실 수 있을 겁니다.

    > >

    > > 그럼.

    > >

    > > 홍진혁 wrote:

    > > > 안녕하세요.

    > > > 델파이 초보자입니다.

    > > >

    > > > 다름아니고, .lib화일을 만들고 싶은데 만드는 방법을 모르겠습니다.

    > > > 고수님들의 한 수 지도 부탁드립니다.

    > > >

    > > > 그리고, 질문이 한가지 있는데요...

    > > > .dll과 .lib의 차이점을 알고 싶습니다.

    > > >

    > > > 그럼 부탁드리겠습니다