본문 바로가기

프로그래밍/C, C++

[Visual Studio 2015, C/C++] DLL, exe 파일 버전 가져오기 (GetFileVersionInfoSize)

728x90

DLL 파일의 버전을 가져와보겠습니다. (exe 파일도 동일한 방법으로 가능합니다)

우선 가져올 DLL 파일의 속성에 들어갔을 때 나오는 버전정보입니다.

아래 DLL은 머신러닝, 딥러닝을 Inference할 때 사용하는 DLL입니다.

파일의 버전정보

 

Code

버전정보를 가져오는 코드입니다.

#include <Windows.h>

#pragma comment(lib, "version.lib")

int main()
{
	int version[4];

	DWORD nullHandle, length;
    
	// 프로젝트 속성에 문자 집합이 유니코드 형식인 경우 wchar_t*, 멀티바이트 형식일 경우 char*
	wchar_t* fileName = L"onnxruntime.dll";

	//GetModuleFileName(NULL, fileName, sizeof(fileName));
	length = ::GetFileVersionInfoSize(fileName, &nullHandle);

	if (length == 0)
		return 0;

	BYTE *pVerInfo = new BYTE[length];
	if (::GetFileVersionInfo(fileName, NULL, length, pVerInfo))
	{
		UINT verlength;
		LPVOID versionPtr;

		if (::VerQueryValue(pVerInfo, _T("\\"), &versionPtr, &verlength))
		{
			VS_FIXEDFILEINFO vi = *(VS_FIXEDFILEINFO*)versionPtr;
			version[0] = vi.dwFileVersionMS >> 16;
			version[1] = (vi.dwFileVersionMS << 16) >> 16;
			version[2] = vi.dwFileVersionLS >> 16;
			version[3] = (vi.dwFileVersionLS << 16) >> 16;
		}
	}
	printf_s("Version : %d.%d.%d.%d", version[0], version[1], version[2], version[3]);

	delete[] pVerInfo;

    return 0;
}

 

Result

버전 정보를 잘 가져온 것을 확인할 수 있습니다.

Version Information