Microsoft MVP성태의 닷넷 이야기
Managed 어셈블리에서의 COM EntryPoint procaddress 문제 [링크 복사], [링크+제목 복사],
조회: 17760
글쓴 사람
뽀로로
홈페이지
첨부 파일
 

COM쪽 지식이 부족하여, 질문에 상황 설명이 정확하게 될 수 있을지 모르겠습니다만 양해 부탁드리겠습니다.

현재 상황은 아래와 같습니다.
이전에 W32기반으로 개발된 내부 엔진이 있는 상태이며, 이 엔진은 COM으로 제작된 DLL들을 통해 확장 기능을 구현하고 있습니다. UI또한 이런 식으로 확장이 되어 있는데, 현재 .NET 3.5CF 기반으로 제작된 WPF 기반의 UI 어플리케이션과 이 엔진을 연동해야 할 필요성이 생긴 상태입니다.

기존의 경우, 엔진과 UI 확장 모두 W32기반으로 구성되어 있고 이를 위한 COM 인터페이스는 확정이 된 상태라, COM interop을 통해 이를 구현하는 managed assembly로 UI기반을 대체하고 이를 UI 어플리케이션과 연동하고자 하는 계획을 가지고 있습니다. 헌데 문제는, 엔진 내부에서 확장 모듈을 불러 올 때 명시적으로 몇몇 EntryPoint를 체크하고 있는데, DllCanUnloadNow() / DllGetClassObject()의 두 함수의 주소를 확장 DLL 로딩시에 반드시 저장하도록 하고 있습니다만 Managed 어셈블리에서는 이 Entrypoint를 찾지 못하고 있습니다. 제 COM interop 구현에 문제가 있는 것인지, 아니면 우회할 수 있는 방법이 있는지 여쭙고자 질문을 드립니다.








[최초 등록일: ]
[최종 수정일: 12/12/2011]


비밀번호

댓글 작성자
 



2011-12-13 10시28분
다소 이해할 수 없는 상황인데요. 해당 COM 개체로부터 DllCanUnloadNow/DllGetClassObject 함수의 주소를 가져올 수 없다면 - 즉 EntryPoint를 가져올 수 없다면, '사용'하는 것 역시 안되어야 정상일텐데요. (개별적인 사용은 되나요?)

그리고, 위의 글 만으로는 제가 추측할 수 있는 방법이 거의 없습니다.

'Win32 기반으로 개발된 내부 엔진'이라고 했으니... 어쨌든 그 엔진의 소스 코드를 디버깅하면 쉽게 나올 수 있는 문제가 아닐까 싶은데요. 어차피 정형화된 GetProcAddress와 LoadLibrary를 사용하고 있을테니까요.
정성태

1  2  [3]  4  5  6  7  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
5920한예지 donator10/3/202313808C#과 WIN32 API 관계 질문드립니다. [4]
5919이건우9/27/202312458WinForm의 로딩속도 관련 질문입니다 [2]
5917한예지 donator9/14/202313170동기화 도구 질문 있습니다. [4]
5916한예지 donator9/3/202313574Thread.Sleep(500), await Task.Delay(500), Task.Delay(500) 차이점이 궁금합니다. [2]
5915한예지 donator8/30/202315004비동기 코드를 for 문 안에 작성한 경우 제어 변수가 올바르게 동작하지 않는 이유가 궁금합니다. [3]
5914한상욱8/11/202314508.net wpf에서 skiasharp 의 skelement 를 canvas로 사용 하고 있습니다. [1]
5913김태우8/10/202314089지역변수로 이해하는 메서드매개변수 게시글 댓글 [3]
5912guest4/25/202319564[참고 - 초보용] Sqlite 디비는 double이 없고 Real이 대신합니다 [3]
5911guest4/24/202313226Form1.cs와 외부 class.cs와 통신 (static async method포함) [4]파일 다운로드1
5910guest4/24/202312578Async 메서드와 try~catch [1]
5909guest4/22/202314210Visual Studio 구매 시(1인 개발자) [4]
5908guest4/22/202313424텅빈 원그리기 [5]
5907민성4/21/202313433안녕하세요 서버 백업 문제에 대해서 [2]
5906guest4/21/202313698Dispatcher 서비스 구현 질문 [1]
5905guest4/20/202314770tabControl의 tabPage가 여러 개일 때 순서를 바꾸기가 까다롭네요 [5]
5904guest4/18/202315107[신규자료첨부] DLL 'SQLite.Interop.dll'을 찾을 수 없습니다 [4]파일 다운로드1
5903guest4/18/202313718fileSystemWatcher 이벤트 관련 질문입니다 [2]
5902guest4/17/202314864c#으로 USB 관련 질문 [2]
5901guest4/17/202312132내솔루션 판매 시 1.0.0.0 폴더와 Sqlite 배포 [5]
5900guest4/17/202315327DLL 'SQLite.Interop.dll'을 찾을 수 없습니다 [2]파일 다운로드1
5899guest4/17/202313293Dictionary와 Linq [4]
5898차가워4/17/202312906CNTK 교육 문의 [1]
5897guest4/17/202312506Socket스레드와 UI thread [4]
5896HAN4/16/202312582c언어 return 에 대해 궁금한게 있어요. [1]파일 다운로드1
5895guest4/15/202312795Drag and Drop - 모든 컨트롤 [2]
5894송부장4/14/202314817[질문] Visual Studio 2022에서 '도구 상자 항목 선택'의 'COM 구성 요소' 탭에서 ActiveX 목록이 보이지 않습니다. [3]파일 다운로드2
1  2  [3]  4  5  6  7  8  9  10  11  12  13  14  15  ...