728x90
프로젝트를 베이스부터 만들던 도중 나오는 에러들에 대해서 해당 글에 정리한다.
1. OpencvSharp 로드 에러
System.TypeInitializationException: 'The type initializer for 'OpenCvSharp.Internal.NativeMethods' threw an exception.'
DllNotFoundException: Unable to load DLL 'OpenCvSharpExtern' or one of its dependencies:
지정된 모듈을 찾을 수 없습니다. (0x8007007E)
현재 위와같은 에러가 발생하였는데 구글 서칭과 클러드에게 물어보니 아래와같은 답변이 돌아왔다.
Any CPU는 프로그램이 32비트(x86)와 64비트(x64) 환경 모두에서 실행될 수 있도록 하는 설정입니다.
하지만 OpenCvSharp의 경우 네이티브 DLL(C++로 작성된)을 사용하기 때문에 문제가 발생합니다.
주요 이유:
- OpenCvSharp는 네이티브 코드를 포함하고 있어서, 32비트용 DLL과 64비트용 DLL이 따로 존재합니다
- Any CPU 설정에서는 실행 환경에 따라 32비트/64비트 중 하나를 선택하게 되는데, 이 때:
- 64비트 Windows에서 Any CPU로 실행하면 기본적으로 64비트로 실행됨
- 하지만 이 경우 프로그램이 실행될 때까지 어떤 버전의 DLL을 로드할지 결정되지 않음
- OpenCvSharp의 네이티브 DLL은 빌드 시점에 명확하게 어떤 버전(32비트/64비트)을 사용할지 알아야 함
따라서:
- x64로 명시적으로 지정하면 빌드 시점에 64비트 DLL을 사용하도록 확실히 결정됨
- Any CPU를 사용하면 런타임에 결정되기 때문에 네이티브 DLL 로딩에 문제가 발생할 수 있음
728x90
'Program > C#' 카테고리의 다른 글
C# netDxf 라이브러리 (1) (0) | 2024.12.16 |
---|---|
C# 유닛(단위)테스트(2) (1) | 2024.12.09 |
C# 유닛(단위)테스트(1) (0) | 2024.12.09 |
C# 디스크I/O (1) | 2024.12.07 |
C# _ Interface (0) | 2024.11.24 |