C++ 라이브러리와 헤더와의 관계에 대해 질문 있습니다.

khnet의 이미지

비주얼 스튜디오를 기준으로 C++ 라이브러리를 만들어서 사용할 때 라이브러리를 사용하는 사용자에게 공개되는 헤더와 라이브러리 내부에서만 사용되는 헤더를 구분하는 방법이 있는 건가요?

빌드 시 설정해줘야 하는 부분 등에서요...

아니면 헤더 공개 여부와 상관없이 똑같은 방식으로 빌드해서 라이브러리를 만든 다음 공개하고 싶은 헤더만 사용자에게 따로 제공하는 건가요?

그리고 라이브러리 프로젝트에 헤더가 포함되어 있지 않은 경우가 있던데 이런 건 어떤 경우 인가요? 그냥 해당 헤더를 사용할 일이 없을 경우 뿐인가요?

너무 초보적이고 바보같은 질문들일 수도 있지만... 답변 주시면 감사드리겠습니다. (__)

익명 사용자의 이미지

print.h
print.cpp
아마 이 두 파일로 작업했다고 치면
솔루션 형식을 라이브러리로 하면 되고
동적 라이브러리면 cpp 파일 내용이 dll로 빌드됩니다
정적 라이브러리면 cpp 파일 내용이 lib로 빌드됩니다

그러면 배포하고 싶은대로 dll 파일을 배포해도 되고, lib파일을 배포해도 됩니다
물론 pring.h 헤더파일이랑 같이 배포해야 받은사람이 써먹을수 있겠죠?
dll이나 lib이나 내용이 바이너리라서 그걸 보고 어떤식으로 구현된건지는 알 수 없는것이고
헤더파일을 보고 함수원형이나 클래스 구조같은건 알수 있겠지만
받은사람이 좀 더 쉽게 알수 있도록 설명서도 같이 배포하는게 좋습니다

bxhs의 이미지

일반적으로..
배포 하고 싶은 헤더만 노출 시킵니다.
내부적으로 쓰는 헤더들은 노출안하고요...

사용자가 어떻게 만들었는지 궁금해 한다면 모를까..
그외에는 아무런 효과가 없으니까요

dll 로 만들경우 배포하고 싶은 클래스에만 export 문을 주고,
배포할때도 그 클래스 헤더들만 배포하면 됩니다.

만약 멤버 변수 마저도 감추고 싶을때는
interface base 로 코딩을 하시면 됩니다.
전 주로 그렇게 합니다.

마지막으로 라이브러리에 헤더가 포함되어 있지 않다면,
정상적인 경로의 라이브러리를 받지 않으신거 같네요

그게 아니라면, com based 로 된 라이브러리이고,
아마 tlb 가 딸려올겁니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.