2011-10-18 2 views
6

두 부분으로 구성된 라이브러리가 있습니다. 하나의 .net 어셈블리 인 P/Invokes을 기본 타사 DLL에 연결합니다. 그러나 데스크톱 모드에서 Metro 스타일 앱에서 어셈블리를 참조하여 실행하면 P/Invoke에 "DLL '라이브러리를로드 할 수 없습니다 : 지정한 모듈을 찾을 수 없습니다."라는 메시지가 System.DllNotFoundException에 발생합니다.메트로의 네이티브 dll을 P/호출하는 방법은 무엇입니까?

네이티브 dll은 특별한 작업을 수행하지 않지만 서버에 대한 외부 TCP/IP 연결 만 생성합니다. 시스템은이 사실을 알 수 없지만 원시 dll은 아무 것도 할 수 없습니다. 이것은 이것이 가능하지 않을 수도있는 이유입니다.

일부 dll 검색 순서는 Metro 스타일 앱과 관련하여 msdn에서 언급되었으므로 기본 dll을로드 할 수 있다는 힌트가 있습니까?

또한 나는이 link on msdn로드 "라이브러리"에 대해 이야기하고 매니페스트 파일에서 PackageDependency을 언급하지만 나에게 그것은 P/Invoke에 수있는 방법으로 패키지에 기본 DLL을 추가하는 방법을 아직 불분명 그것을 발견.

+0

DLL에서 TCP/IP 항목을 주석 처리하고 다시 테스트 해 볼 수 있습니까? 그러면 findind가 아닌 DLL을 종속물과 구별하지 않습니다. 또한 발신 인터넷 연결을 사용하려는 기능을 선택 했습니까? –

+0

나는 DLL을 만들지 않았다. 그것은 해결책의 일부가 아닙니다. 그래서 DLL을 빌드하는 방법을 변경할 수 없습니다. 좋은 점은 오류를 일으키는 2 차 종속성 일 수 있습니다! 가능한 한 빨리 확인해 보겠습니다. – vidstige

+1

@vidstige 당신은 아마도 지금까지이 문제를 해결했을 것입니다. 그렇다면 [내 대답] (http://stackoverflow.com/a/12122750/650012)에서 관련 질문을 찾아보십시오. –

답변

0

프로젝트에 추가 (프로젝트, 추가, 기존 항목을 마우스 오른쪽 단추로 클릭하십시오.) 해당 항목의 속성에서 내용이 참으로 설정되어 있는지 (기본적으로 false 임) 확인하십시오.

+0

답해 주셔서 감사합니다. 이것은 정상적인 C# 환경에서 작동하지만 시도해 보았지만 Metro 프로젝트에서 작동하지 못했습니다. – vidstige

+1

"작동하지 않음"- 컴파일 오류를 설명 하시겠습니까? 발사시 신비한 녹색 화면? 실행하는 동안 실행 된 예외? –

+1

질문을 특정 오류 메시지로 업데이트했습니다! 예외는 P/Invoke 특성으로 메서드를 호출 할 때 발생합니다. – vidstige

0

이것은 의도적으로 설계된 동작입니다. LoadLibrary에서 리턴 된 오류 코드 126의 오류로 인해 문제점이 발생했을 수 있습니다. 응용 프로그램이 데스크톱 모드에서 실행되는 경우 응용 프로그램의 데스크톱 모드를 대상으로 지정해야합니다. 이전 버전의 Windows를 사용할 수도 있습니다.

관련 문제