2013-04-11 4 views
2

나는 약간의 테스트를 수행하기 위해 학교에 데려 가기 위해 필요한 작은 게임을 만들었습니다.d3dx9_43.dll을 내 응용 프로그램에 패키지하는 방법?

불행히도 학교 시스템이므로 설치되지 않은 모든 DLL을 패키지화하여 실행해야합니다. 컴퓨터에 어떤 것을 설치하는 것은 문제가되지 않습니다. 며칠 전에 내려 갔을 때 d3dx9_43.dll 파일이 누락되어 응용 프로그램이 시작되지 않는 것으로 나타났습니다.

내가 사용했던 라이브러리를 정적으로 연결했는데 왜 이것이 포함되지 않았는지 혼란 스럽습니다. 나는 내가 사용했던 (또는 그렇게 생각한) 모든 Direct3D 9 라이브러리를 참조했다.

아무도 도와 줄 수 있습니까?

나는 비주얼 스튜디오 C++ 2010을 사용하고 응용 프로그램 설치 프로그램 내부의 DirectX 9.0 재배포 가능 패키지를 포함하여 수행해야하는데 Direct3D를 9

답변

1

를 사용하지만, 당신은 아무것도를 설치할 수 없기 때문에 당신은 제공해야 하나 있어요 실행 파일 (SDK 라이선스에 위배됨) 또는 정적으로 DirectX 런타임에 링크되는 모든 dll (허용되지 않을 수도 있음)

다이렉트 X 런타임에 정적으로 링크하는 것은 좋은 생각이 아니며 사소한 것처럼 보이지는 않습니다. 나는 그것이 가능 할지도 모르겠지만 실제 정적 라이브러리 (실제 정적 라이브러리가 있어야합니다. 스스로 dll에 대해).

그래서 가장 쉬운 해결책은 exe로 필요한 모든 DLL을 유지하는 것입니다. 하나의 종속성이 누락 될 염려가 있으시면 Dependency Walker을 사용할 수 있습니다. 이 솔루션은 SDK 라이센스에서 허용되지 않으며 실제로 최종 사용자에게 응용 프로그램을 배포하는 데 사용할 수 없습니다.

+0

나는 누군가가 저에게 말해 줄 것이라고 정말로 걱정했습니다! 그래도 고마워. – Chris

+0

글쎄, 비록 당신이 정적으로 런타임에 연결할 수있다하더라도, 당신의 게임으로 모든 dll을 출하하는 것이 더 쉬울 것입니다 (게임이 하나의 파일 이어야만하는 경우 제외). – zakinster

+0

DLL을 제공 할 수 없습니다. 유일한 방법은 redist 패키지를 사용하는 것입니다. –

2

라이센스를 준수하는 유일한 옵션은 재배포 가능 패키지를 설치하는 것입니다.

이전 버전의 D3DX는 정적 연결을 지원했지만 보안상의 이유로 MS는 정적 연결을 금지하는 규칙을 변경했습니다. 그들은 WIndows Update를 통해 이러한 DLL을 서비스 할 수 있기를 원했고 공식 재배포 가능 패키지를 사용하여 설치 한 경우에만 가능했습니다.

하나의 가능한 옵션은 D3DX에 연결하는 것을 피할 수 있는지 확인하는 것입니다. 해당 라이브러리를 사용하지 않아도 될 수 있습니다.

+0

나는 살펴보고 보겠습니다. 이 라이브러리에 의존하지 않도록 프로그램을 변경할 수 있습니다. 나는 이것을 미리 깨닫지 못하는 것에 대한 어리 석음을 느낀다. 그리고 결국, 끝까지 가깝게, 나는 어려운 길을 발견한다! – Chris

관련 문제