用VC++作了一个DLL,要给VB调用,为了让 VB能够方便的判断DLL的版本,我就想在VC做的DLL里面定义一个导出函数 long GetDllVersion() ,以一个整形的方式返回DLL自身的版本号,请问该如何写?unsigned long GetDllVersion() //获取DLL的版本号。
//这样便于调试的时候知道 VB 正在调用哪个版本的dll.{
}
其中我知道DLL的版本号在资源ID里面设置,但不知道如何用代码去获取其值?请不吝赐教,谢谢!
//这样便于调试的时候知道 VB 正在调用哪个版本的dll.{
}
其中我知道DLL的版本号在资源ID里面设置,但不知道如何用代码去获取其值?请不吝赐教,谢谢!
DWORD dwHandle,
DWORD dwLen,
LPVOID lpData
);
1: 你直接输出这个版本号,也就是说这个版本号的字穿在程序种写死。如果你要读取资源的话,用loadresourse
//这样便于调试的时候知道 VB 正在调用哪个版本的dll.
{
return(1103);
}不过经过 goodboyws(深夜不眠者) 的提醒,我在VB中利用 API GetFileVersionInfo(),得到
DLL的版本,也达到了目的.谢谢.
比如
VS_VERSION_INFO 里的那些字符串. 我是菜鸟,见笑了.
// read file version info
DWORD dwDummyHandle; // will always be set to zero
len = GetFileVersionInfoSize(filename, &dwDummyHandle);
if (len <= 0)
return FALSE; m_pVersionInfo = new BYTE[len]; // allocate version info
if (!::GetFileVersionInfo(filename, 0, len, m_pVersionInfo))
return FALSE; LPVOID lpvi;
UINT iLen;
if (!VerQueryValue(m_pVersionInfo, _T("\\"), &lpvi, &iLen))
return FALSE; // copy fixed info to myself, which am derived from VS_FIXEDFILEINFO
*(VS_FIXEDFILEINFO*)this = *(VS_FIXEDFILEINFO*)lpvi; // Get translation info
if (VerQueryValue(m_pVersionInfo,
"\\VarFileInfo\\Translation", &lpvi, &iLen) && iLen >= 4) {
m_translation = *(TRANSLATION*)lpvi;
TRACE("code page = %d\n", m_translation.charset);
}