[ LinuxFreeBSD ] in KIDS 글 쓴 이(By): uriel (조영익) 날 짜 (Date): 2003년 4월 28일 월요일 오후 05시 40분 19초 제 목(Title): Re: linux에서 mfc의 ATL COM APPWIZARD >듣기로는 MFC에서 ATL COM APP WIZARD 타입의 프로젝트로 라이브러리를 만들면, >visual basic 혹은 delphi 등으로의 이식시, 일반적인 라이브러리처럼 바로 >include할 수 있게끔 해준다고 들었습니다. 혹시 리눅스로 conversion할 >때도 이것이 가능한가요? > ATL COM으로 만드는 경우 delphi나 visual basic에서 바로 사용할 수 있는 이유는, ATL COM으로 만들어진 output은 windows의 regular dll과 같이 취급할 수 있기 때문입니다. 그리고 이런 식으로 다른 언어에서 사용할 수 있게 만드는 경우는 사용할 수 있는 변수 type의 제한을 강하게 받습니다. 일단 struct나 class를 매개변수로 사용하는 게 거의 안된다고 생각해야 하고 (*거의*입니다), 배열의 경우는 safe array를 사용해야 하고, 문자열의 경우는 BSTR 타입을 사용해야 합니다. 리눅스랑은 상관 없는 이야기죠. >만약 가능하다면, ATL COM 으로 생성된 결과물은 header file과 dll 혹은 >lib식의 파일인데, 이것을 어떤식으로 include할 수 있습니까. >단순히 linux쪽 project folder에 넣어주고, 필요한 시점에서 include만 해주면 >되는건가요? (__declspec(dllimport) 등을 사용하는 식으로... 근데 이 >매크로들은 linux에서 사용가능한지 모르겠네요) > ATL COM으로 생성된 결과물은 dll 또는 exe밖에 없습니다. ATL COM (그러고 보니 좀 애매한 명칭이군요. ATL은 COM을 구현하는 한 방법일 뿐입니다)은 이 쪽 소스코드를 저 쪽에서 사용하자는 게 아니라, 이 바이너리 (DLL)를 그대로 다른 프로그램에서 사용하자는 방법입니다. 당연히 플랫폼과 OS에 아주 밀접한 관계가 있습니다. 지금 하신 질문에 기본적으로 할 수 있는 대답은 No입니다만, 리눅스/유닉스에서 Internet Explorer를 돌릴 수 있냐고 물어보면 (IE는 COM으로 되어 있습니다. 이게 가능하면 말씀하신 것도 됩니다) 가능하긴 합니다. COM을 유닉스에서 돌아가게 해 주는 3rd party infrastructure가 나와 있는 것으로 알고 있습니다. 단지 이게 안쓰이는 것을 보면 여러가지 문제가 아주 많이 있는 것으로 생각합니다. |