C# 프로그램에서 리소스로 추가 한 관리되지 않는 C++로 작성된 코드가 있습니다.관리되는 C# 코드에서 관리되지 않는 EXE를 리소스로 포함
Assembly.Load
을 사용하여 관리되지 않는 EXE를로드하려고하면 InnerException에 "IL Format is incorrect"(분명히)라는 BadImageFormatException
가 표시됩니다.
어떻게하면됩니까?
DLL로 코드를 사용하는 것이 더 좋을지 만, 어떤 이유로 dll 호출은 System.Diagnostics.Process.Start
과 함께 관리되지 않는 exe를 실행할 때와 같은 방식으로 동작하지 않습니다.
그리고 두 개의 EXE 파일을 분리하고 싶지는 않습니다. 어떤 생각?
편집 : OK, 나는 더 이상 그렇게 할 필요가있다. 내 dll은 다른 컨텍스트 (콘솔 대신 winform)에서 사용하기 때문에 다른 방식으로 동작합니다. 따라서 문제를 일으키는 기능, SetThreadDesktop
, 예상대로 작동하지 않을 수 있습니다. 답변을 얻은 모든 사람들에게 감사드립니다.
이 관리되지 않는 실행 파일을 사용하려고합니까? 그것을 실행? 당신은 임베디드 EXE 파일을 % TEMP % 경로에 저장하고'Process.Start'를 사용하여 파일을 저장해야합니다. 그런 다음'WaitForExit'을 사용하고 EXE를 삭제하여 정리하십시오. – vcsjones
그건 참 좋은 생각이지만, 임베디드 EXE를 생성하지 않고 오히려이 작업을 수행 할 수 있습니다. – GianT971
C++/CLI 컴파일러를 사용하여 C++을 혼합 모드 어셈블리로 컴파일하고 C# 코드와 링크 할 수 있어야합니다 하나의 파일로 –