내 프로그램을 msvc * .dll과 연결하지 않으려면 어떤 헤더를 이 아닌으로 사용해야합니까?내 프로그램을 msvc * .dll과 연결하지 않으려면 어떤 헤더를 사용하지 않아야합니까?
는 순간 내 응용 프로그램은 사용
- KERNEL32
- USER32
- shell32를
- msvcp90
- msvcr90
아래 두 파일을 제거하고 싶습니다. 프로그램의 특정 부분을 다시 작성해야한다면 괜찮습니다.
다음 C 코드와는 어떤 MSVC의
내 프로그램을 msvc * .dll과 연결하지 않으려면 어떤 헤더를 이 아닌으로 사용해야합니까?내 프로그램을 msvc * .dll과 연결하지 않으려면 어떤 헤더를 사용하지 않아야합니까?
는 순간 내 응용 프로그램은 사용
아래 두 파일을 제거하고 싶습니다. 프로그램의 특정 부분을 다시 작성해야한다면 괜찮습니다.
다음 C 코드와는 어떤 MSVC의
CRT가 프로그램에 연결되는 방식을 변경해야한다고 생각합니다. 나는 당신이 C++ -> 코드 생성 -> 런타임 라이브러리를 정적 버전으로 변경해야한다고 생각합니다. Visual Studio 2005 용입니다. 최신 버전에 대해서는 알지 못합니다.
2k3, 2k5 및 2k8에서 모두 동일합니다. – sharptooth
102 킬로바이트 O.o는 엄청납니다. 빛을 정적으로 링크 된 프로그램으로 만드는 방법이 있습니까? –
가장 좋은 방법은 링커 설정에서 "진행 메시지"를 켜서 연결 대상과 그 이유를 살펴 보는 것입니다. 그러면 프로그램에서 무엇을 변경해야하는지에 대한 아이디어를 얻을 수 있습니다. – sharptooth
그 라이브러리가 C++ 런타임 포함 연결되지 않습니다 링크 만약 내가 알고 있기 때문에 -에서 제거하기 어려운 힙 관리 및 기타 물건을.
"C++ -> 코드 생성 -> 런타임 라이브러리"설정 대신 C++를 정적으로 링크 할 수 있습니다. 그런 다음 해당 .dll 파일이 필요하지 않습니다. 그러나 권장되는 방법은 아닙니다. C++ 런타임에 취약점이 발견되면 프로그램을 다시 컴파일하고 다시 보내야합니다.
정적 링크가 정답입니다. 관련 조언은 depends.exe를 사용하여 exe가 종속 DLL에 실제로 어떤 기능을 수행하는지 확인하는 것입니다. 이러한 종속성은 사용자가 명시 적으로 사용하거나 명시 적으로 호출하지 않은 CRT 구현으로 인해 발생할 수 있습니다.
헤더는 링크 대상을 결정하지 않습니다. 호기심이없는 –
왜 그런 식으로하고 싶습니까? 플랫폼 간 문제와 관련이 있습니까? –
나는 매우 가벼운 프로그램을 만들 필요가있다. (나는 C로 할 수 있지만 VC++을 더 좋아한다.) –