Program/C#

C# 프로젝트 Error 정리

사막여유 2025. 1. 8. 16:06
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++로 작성된)을 사용하기 때문에 문제가 발생합니다.

주요 이유:

  1. OpenCvSharp는 네이티브 코드를 포함하고 있어서, 32비트용 DLL과 64비트용 DLL이 따로 존재합니다
  2. Any CPU 설정에서는 실행 환경에 따라 32비트/64비트 중 하나를 선택하게 되는데, 이 때:
    • 64비트 Windows에서 Any CPU로 실행하면 기본적으로 64비트로 실행됨
    • 하지만 이 경우 프로그램이 실행될 때까지 어떤 버전의 DLL을 로드할지 결정되지 않음
  3. 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