ATL DLL을 만들어야 합니다.

anaud2의 이미지

안녕하세요

VC++ DLL을 만들어서 ASP 에서 로드를 하려고 ATL을 공부하고 있습니다.

간단하게 ATL DLL을 만들어서 ASP에서 호출을 하려고 하는데요

간단하게 덧샘뺄샘을하고 그 결과값을 확인만 할수 있어도

VC++에서 만든 함수들을 ATL DLL에 적용을 시키면 될거 같아서요

인터넷을 뒤져봐도 ATL DLL 을 만들고 호출하는 부분이 안나와 있네요

대충 감으로는 VS 6.0을 사용하는데 ATL 프로젝트에서 New ATL Object로 simpleobject선택해서

인터페이스 만들고 인터페이스에서 함수를 추가 하고 그것을 ASP에서 로드 할것만 같은데

로드해보니 안되고 어케하는지 명확히 감이 안오네요

ATL 기초와 ASP에서 로드하는 부분을 공부할수 있는 사이트가 있을까요.

아시는분 가르쳐 주세요 ㅠㅠ 찾아봐도 잘안나와있어서 어렵네요



brucewang의 이미지


안녕하세요,

전에 저도 뭔가 general한 답변을 드렸는데 여전히 잘 안되시나 보죠?
(참고로 ATL dll만들기 다른 예제 : http://www.codeproject.com/KB/atl/SimpleDlls.aspx)

그래서 혹시 뭔가 이유가 있을까 해서 anaud2님의 게시물을 하나 봤는데
이 게시물의 연장선상에 있는 질문이신지요? --> http://kldp.org/node/97617

그렇다면 우선 먼저 아무런 파라미터를 가지지 않는 테스트 함수를 호출해서 성공해 보도록 하세요.
(성공 결과는 로그 파일을 만드시던지 하셔서 확인하시면 될것 같습니다.)

ATL COM object를 만들고 하는 샘플들은 사용하시는 VisualStudio 버전마다 다르지만 근본원리는 동일하니까 한번 시도를 해보시고요...

다시 그 게시물 내용으로 돌아가서...
아마도 COM object에 있는 함수가 pointer 형식으로 값을 리턴하게 되어 있나보군요.
이 단계에서 문제가 생기신 것이라면 그 게시물에 'mg2000' 님이 답변해 주신것이 정확한 답 입니다.

idl에 [out, retVal]로 해당 함수의 마지막 파라미터는 return value라고 알려주는 것입니다.
그렇게 하면, 그 게시물에서 anaud2 님이 만드신 함수의 C++ signature는 파라미터가 3개이지만 ASP에서는 파라미터 2개에 return값이 long인 것으로 인식하는 것이죠..

http://www.bridgeport.edu/sed/fcourses/cs545/Lectures/cs545_ComATL.doc

참고로
ASP에서는 C++의 타입을 거의 해하지 못합니다. 정확히 말씀드리면 C++의 int*, long* 같은 타입이 뭔지 모릅니다. ASP에서는 그래서 Variant라는 형식일 것이라고 짐작합니다.

자세한 내용은 저로선 간단히 설명드릴수가 없네요... 다음 링크들을 확인해 보세요.

http://msdn.microsoft.com/en-us/library/ms974002.aspx
http://bytes.com/forum/thread55566.html
http://www.codeproject.com/KB/atl/udtdemo.aspx
http://msdn.microsoft.com/en-us/library/ms972340.aspx
http://www.devx.com/tips/Tip/24788

이렇게 되면 원래의 로직 이외에 알아야 할 것이 너무 많아지겠네요.. 사실 MS쪽 프로그래밍은 로직 자체보다는 주변 기술자체마다 새로운 용어와 컨셉을 아는데 너무 많은 에너지를 소비하게 됩니다...

이전 게시물에 보니까 .NET 버전도 만드신다면서요? 그러면 아예 ASP.NET 버전으로 시작하시면 어떨까요. C#에서 만든 객체를 ASP.NET에서 아주 자연스럽고 직관적으로 불러다 쓰실 수 있을텐데요.

저도 잘 모르고 안해본지 오래 됬지만, 혹시나 도움이 되실까 싶어서 올립니다..

좋은 소식 있기를 바랍니다~

-------------------------------------------------
$yes 4 8 15 16 23 42

-------------------------------------------------
$yes 4 8 15 16 23 42

댓글 달기

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