정적으로 링크 된 라이브러리에 버전 문자열을 넣고 링크 된 실행 파일의 이미지에 포함되도록 강요하고 이미지를 확인 (예 : strings
)하고 버전 문자열을 볼 수 있습니다.정적 라이브러리의 문자열을 링크하는 실행 파일에 포함시킬 수 있습니까?
표준 C 및/또는 gcc에서 가능하며 실행 파일의 링크 옵션을 특별히 조정할 필요가 없습니까? 내가와 C++에서 이것을 달성하기 위해 관리했습니다 보인다
(그 정적 라이브러리를 사용하는 실행 파일의 연결을 조정하는 것은 .../잊기 쉬운 유지하는 지루한 일이기 때문에)
extern char const * that_version_string;
static char const * const foo_that_version_string = that_version_string;
라이브러리의 헤더 파일에 있습니다. 하지만 C는 컴파일하지 않습니다 : "non-const initializer"또는 이와 비슷한 것.
정적으로 링크 된 라이브러리를 의미합니까? 그렇다면 링크 된 exe가 라이브러리 코드를 포함하므로 라이브러리 버전 문자열이 이미 파일에 포함됩니다. –
@Peter M : 예, 정적으로 링크되었습니다. 연결된 exe는 모든 객체가 아닌 라이브러리의 참조 된/사용 된 객체 만 포함합니다. 이 버전 문자열이 아닌 모든 개체에 대해 해당 동작을 변경하고 싶지 않습니다. 예 : exe는 라이브러리에서 필요한 기능 만 포함해야합니다. – Zrin
왜'const char * Version() {return "your_version_str";}'라이브러리에 간단히 추가하지 않으시겠습니까? (상수) 문자열은 라이브러리 객체 코드의 RO 데이터 섹션에 상주하며 함수는 호출 될 때마다 해당 문자열에 대한 포인터를 반환합니다. –