VS.NET C++로 Win32 API 프로그램을 만들었는데 왜 mfc71.dll을 찾는걸까요?

tinywolf의 이미지

Win32 API로만 코드를 짠다음에..
stl 조금 썼구요..
gl과 glu를 조금 사용했습니다..

dll에서 창을 생성하고 화면에 표시하구요..
exe 프로그램은 파일로 읽은 값을 전달하는 역할만 합니다..
둘다 MFC 사용 옵션은 "표준 Windows 라이브러리 사용"으로 바꿔서 링크 안되게 했구요..

그런데 왜 실행할 때 mfc71.dll, msvcp71.dll, msvcr71.dll 들이 필요한 걸까요??
dll이 MFC 확장 DLL이라 그런 걸까요? (딴건 하나도 안 쓰고 단지 클래스를 export할려고..)

그냥 동적 DLL로 클래스를 전달할 수 있는 방법이 있다면 알고 싶습니다.
Create란 함수를 만들어서 생성된 클래스를 전달하도록 가능할까요?

흠.. 여러가지 시도해 봐야겠군요..

zelon의 이미지

설치된 폴더를 뒤져보면 depends.exe 라는 툴이 있습니다. 여기에 실행 파일을 던져보면 왜 그 dll 이 필요한지를 알수 있습니다. ^^

-----------------------------------------------------------------------
GPL 오픈소스 윈도우용 이미지 뷰어 ZViewer - http://zviewer.wimy.com
블로그 : http://blog.wimy.com

ssggkim의 이미지

dll 붙는 것이 싫으시다면 wtl을 시도해 보심이...

http://sourceforge.net/projects/wtl/

uriel의 이미지

클래스를 dll에서 export 한다면 mfc 확장 dll로 해야 하는데, 이렇게 하면mfcxx.dll를 링크하는 것으로 알고 있습니다. 이게 싫으면 dll에서 클래스가 아니라 함수만 export 해야죠.

익명 사용자의 이미지

zelon wrote:
설치된 폴더를 뒤져보면 depends.exe 라는 툴이 있습니다. 여기에 실행 파일을 던져보면 왜 그 dll 이 필요한지를 알수 있습니다. ^^

Visual C++.Net 2003은 아마 Default로 설치 하시면 Dependency Walker가 포함되지 않는 걸로 압니다.
Platform SDK를 설치하셨다면 아마 Bin폴더를 찾아 보시거나 따로 인터넷에서 구해서 사용하셔야 할듯 합니다.

그리고 MFC확장DLL이 아니라도 class를 DLL로 Export하는 것이 가능 한 것으로 압니다. 물론 class Export는 꽁수라서 다른 C++컴파일러나 언어에서 사용하기 힘들다는 점도 알아두셔야 할듯 합니다.

WTL은 꽤 쓸만합니다. :)

uriel의 이미지

Anonymous wrote:

그리고 MFC확장DLL이 아니라도 class를 DLL로 Export하는 것이 가능 한 것으로 압니다. 물론 class Export는 꽁수라서 다른 C++컴파일러나 언어에서 사용하기 힘들다는 점도 알아두셔야 할듯 합니다.

어떻게 하는 것인지 알 수 있을까요? 예전에 wrapping을 해볼까 하다가 결국 포기하고 mfc dll을 만든 기억이 있는데요. AFX_EXT_CLASS이 선언되면 dll에서 클래스를 사용할 수 있긴 한데, 이건 mfc 확장 dll이죠. 제가 가진 mfc 책도 예전 책이라 그냥 mfc 확장 dll을 사용해야 한다고만 되어 있네요. 아마도 무슨 꽁수로 될 것 같긴 한데 한 수 배우고 싶습니다.

다크슈테펜의 이미지

uriel wrote:
Anonymous wrote:

그리고 MFC확장DLL이 아니라도 class를 DLL로 Export하는 것이 가능 한 것으로 압니다. 물론 class Export는 꽁수라서 다른 C++컴파일러나 언어에서 사용하기 힘들다는 점도 알아두셔야 할듯 합니다.

어떻게 하는 것인지 알 수 있을까요? 예전에 wrapping을 해볼까 하다가 결국 포기하고 mfc dll을 만든 기억이 있는데요. AFX_EXT_CLASS이 선언되면 dll에서 클래스를 사용할 수 있긴 한데, 이건 mfc 확장 dll이죠. 제가 가진 mfc 책도 예전 책이라 그냥 mfc 확장 dll을 사용해야 한다고만 되어 있네요. 아마도 무슨 꽁수로 될 것 같긴 한데 한 수 배우고 싶습니다.


저도 궁금하네요...전에 핸드폰 문자 메시지 전송 클라이언트 만들때 C#이라서 DLLImport하고 마샬링 그리고 콜백함수는 델리게이트를 써서 완성을 했거든요.다른 방법이 있는 건가요...?

인생이란게 다 그런게 아니겠어요....? 뭘(?)
http://schutepen.egloos.com

byung82의 이미지

확장 dll로 되는지는 모르겠습니다.

저 같은경우는 인터페이스를 만들어서 생성하는 함수만 export 해주고 있습니다.

이렇게 할겨우 다른언어들로 불러들이수는 있지만 클래스 삭제에 대한것이 귀잖아 지는 단점이 있는데 그걸 다시 delete 를 재정의를 하서 지우게 하기도 했습니다. 생성도 마찬가지로 ^^:

그렇게 해서 lib 만들어서 쓰니 편하기는 하더군여 ^^;

그럼

corba의 이미지

MSDN의 Using dllimport and dllexport in C++ Classes라는 항목을 참고하세요. :)

Microsoft Specific

You can declare C++ classes with the dllimport or dllexport attribute. These forms imply that the entire class is imported or exported. Classes exported this way are called exportable classes.

The following example defines an exportable class. All its member functions and static data are exported:

#define DllExport   __declspec( dllexport )

class DllExport C
{
   int i;
   virtual int func( void )
   { return 1; }
};

Note that explicit use of the dllimport and dllexport attributes on members of an exportable class is prohibited.

@ C#에서의 Import가 가능할지는 저도 잘 모르겠군요.
@@ 옛날 Borland C++에도 DLL Export가 있었습니다만 VC랑 방법이 달랐던 걸로 기억합니다. 한마디로 Class Export는 호환성이 꽝이란 얘기죠...
@@@ zelon, byung82 잘 지내고 계시죠 ? ;)

byung82의 이미지

흐흐흐..

잘지내고 있습니다 ^^;

요즘 넷비 삽질한다고 정신이 없습니다

그럼

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.