728x90
[문제]
WPF App에서 모듈을 사용중이다.
모듈이 32bit DLL로 되어져 있다.
그래서 현재 빌드 구성을 AnyCPU의 32비트 기본 사용으로 하고 있다.
그런데 32bit로 프로그램이 실행되다 보니 메모리 부족 문제가 발생되는 것 같아서
WPF 빌드 구성을 64비트로 변경 후 빌드하니 32비트 모듈 DLL이 정상적으로 호출되지 않는 것 같은데
64비트 닷넷 프로그램에서 32비트 네이티브 DLL을 import해서 정상적으로 호출할 수 있는 방법이 있나요?
[방안]
1. 없다. 대신 우회 방법으로 모듈을 사용하는 별도의 exe를 32비트로 만들고 그 프로세스를 필요할 때마다 실행한 후 WPF App과의 통신을 소켓 등으로 처리할 수 있다.
그건 그렇고,.. 웬만한 규모의 프로그램이 아니고서는 아무리 32비트 프로세스여도 메모리 부족 현상이 발생할 리는 없을텐데, 따라서 메모리 누수로 인한 문제가 아닌 것인지 먼저 체크해 보는 것도 좋은 선택일 수 있다.
2. UI와 엮인 것이 아니라면 COM+에 32비트 dllhost.exe로 호스팅을 대행하고 그것을 64비트에서 호출하는 것도 가능합니다. 개인적으로 등록 등의 배포 과정이나 그 외의 다른 비용을 봤을 때 오히려 별도의 exe를 만들어 소켓 통신으로 처리하는 것이 더 나을 것 같다는 판단입니다.
[출처]
728x90
'C#' 카테고리의 다른 글
Task와 Thread 차이 (0) | 2023.11.04 |
---|---|
비동기 프로그래밍 (0) | 2023.11.04 |
마샬링(Marshalling) vs 직렬화(Serialization) (1) | 2023.11.04 |
마샬링(Marshalling) (0) | 2023.11.04 |
Delegate와 Event (0) | 2023.11.03 |