2012-03-05 4 views
1

C++ 클래스 용 C++/CLI 래퍼를 만들고 있지만 C++/CLI 프로젝트를 작성하여 만든 DLL이 C#에서로드되지 못하고 Assembly.Load가 messageNotFound 예외를 throw합니다. "파일 또는 어셈블리 'CLIExport.dll'또는 해당 종속성 중 하나를로드 할 수 없습니다. 지정한 파일을 찾을 수 없습니다.".NET 어셈블리 DLL에 종속성이 없습니다.

C++/CLI 프로젝트에는 C++ 클래스가 의존하는 래퍼 클래스, 하나의 헤더 파일 만 포함되어 있습니다. 소스 파일과 헤더 파일이 솔루션에 추가되었으므로 참조가 추가되지 않았습니다. C++/CLI 프로젝트에서 C++ 클래스에 대한 참조를 추가해야합니까? 나는 C# 응용 프로그램이 어셈블리가 없다고 생각하는지 모르겠다. 나는 C++/CLI 프로젝트가 클래스와 같이 사용하는 모든 .net 유형에 대한 참조를 가질 필요가 있는지, 참조를 추가 할 필요가 있는지 모르겠다. 시스템 네임 스페이스?

감사합니다.

+1

64 비트 프로젝트에 x86 lib를로드하려고합니까? – squelos

+0

필자는 그렇게 믿지 않는다. 64 비트 PC에서 테스트중인 C# 프로젝트와 동일한 컴퓨터에서 C++/CLI 프로젝트를 만들었다. 64 비트 시스템에서 x86 라이브러리를 만들 수 있습니까? –

+1

http://www.dependencywalker.com/을 사용하고 래퍼 DLL을 열고 누락 된 종속성이 있는지 확인하십시오. –

답변

1

64 비트 솔루션에서 관리되지 않는 x86 dll을 사용하려고한다는 것이 문제라고 생각합니다.

시도해보십시오. 솔루션에서 마우스 오른쪽 버튼을 클릭 한 다음 을 클릭하고 모든 프로젝트를 x86으로 설정 한 다음 다시 빌드하십시오. What does the Visual Studio "Any CPU" target mean?

그리고 빠른을 : 당신은 여기 읽을 수

임 빌드 구성에 따라서 오류 메시지가 일치하지 않는 확신 (I 같은 문제로 몇 번 실행 ...) VS에서 다른 대상의 개요 : http://visualstudiohacks.com/articles/visual-studio-net-platform-target-explained/

+0

내 솔루션에 프로젝트가 하나 뿐이므로 방금 C++ 소스 파일을이 솔루션에 추가했는데 잘못 맞습니까? 전체 C++ 프로젝트를 솔루션에 추가해야합니까? confiruration manager에는 x64/x86 옵션이 없습니다. build config (debug/release), Platform (win32는 유일한 옵션) 및 'build'로 표시된 체크 박스 만 변경할 수 있습니다. –

+0

프로젝트의 새 구성을 만들 수 있습니까? ? – squelos

+0

@BillWalton 확실히 두 프로젝트가 있습니까?C++ 클래스와 C++/CLI 래퍼 클래스를 포함하는 프로젝트와 다른 프로젝트에서 생성 된 DLL을 사용하는 C# 프로젝트? –