我刚把这个位包含在我已经运行的代码中,但是我收到了LNK2019错误。粘贴代码后我会粘贴错误。
班级CAboutDlg有:
public:
CStatic m_VersionInfoCtrl;
virtual BOOL OnInitDialog();
};
功能本身:
BOOL CAboutDlg::OnInitDialog()
{
CDialog::OnInitDialog();
CString inFileName = AfxGetApp()->m_pszExeName;
inFileName += ".exe";
void * theVersionInfo;
void * theFixedInfo;
unsigned long aVersionInfoSize = GetFileVersionInfoSize ( inFileName , &aVersionInfoSize);
CString returnString;
if (aVersionInfoSize)
{
theVersionInfo = new char [aVersionInfoSize];
GetFileVersionInfo ( inFileName, 0 , aVersionInfoSize, theVersionInfo) ;
unsigned int aSize = 0;
VerQueryValue( theVersionInfo , "\\" , &theFixedInfo , &aSize);
if (theFixedInfo)
{
VS_FIXEDFILEINFO * aInfo = (VS_FIXEDFILEINFO *) theFixedInfo;
DWORD dwMajorVersionMsb = HIWORD( aInfo->dwFileVersionMS );
DWORD dwMajorVersionLsb = LOWORD( aInfo->dwFileVersionMS );
DWORD dwMinorVersionMsb = HIWORD( aInfo->dwFileVersionLS );
DWORD dwMinorVersionLsb = LOWORD( aInfo->dwFileVersionLS );
returnString.Format("Version %d . %d . %d. %d",dwMajorVersionMsb,dwMajorVersionLsb,dwMinorVersionMsb,dwMinorVersionLsb);
//memcpy(sVer,returnString.GetBuffer(),returnString.GetLength()+1);
}
delete theVersionInfo;
}
m_VersionInfoCtrl.SetWindowText(returnString);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
...
它给了我以下三个错误:
1.RangemasterGenerator error LNK2019: unresolved external symbol _VerQueryValueA@16 referenced in function "public: virtual int __thiscall CAboutDlg::OnInitDialog(void)" (?OnInitDialog@CAboutDlg@@UAEHXZ)
2.RangemasterGenerator error LNK2019: unresolved external symbol _GetFileVersionInfoA@16 referenced in function "public: virtual int __thiscall CAboutDlg::OnInitDialog(void)" (?OnInitDialog@CAboutDlg@@UAEHXZ)
3.RangemasterGenerator error LNK2019: unresolved external symbol _GetFileVersionInfoSizeA@8 referenced in function "public: virtual int __thiscall CAboutDlg::OnInitDialog(void)" (?OnInitDialog@CAboutDlg@@UAEHXZ)
... 我无法理解问题所在。任何人都可以帮忙。 感谢。
答案 0 :(得分:51)
您需要链接包含两个函数VerQueryValue
和GetFileVersionInfo
的库 - 链接器默认不知道在哪里找到它们。
快速搜索MSDN上的两个函数表明它们都在系统库version.dll中,而您要链接的库是version.lib。只需将其添加到链接器属性中的库列表中即可。
答案 1 :(得分:9)
GetFileVersionInfo 和 GetFileVersionInfoSize 的功能在Version.dll
和Version.lib
中定义,所以请确保喜欢合适的图书馆。
答案 2 :(得分:5)
在将VS6.0应用程序升级到VS2012平台时,我也遇到了同样的错误。
a。错误LNK2019:函数_main中引用了未解析的外部符号_GetFileVersionInfoSizeA @ 8
b。错误LNK2019:函数_main中引用了未解析的外部符号_GetFileVersionInfoA @ 16
c。错误LNK2019:函数_main中引用了未解析的外部符号_VerQueryValueA @ 16
解决:强>
我发现它缺少对库“Version.lib”的引用。
a。对于VS6.0,请将其添加到项目设置 - >链接 - >库模块
b。对于VS2012,请添加到项目属性 - >链接器 - >输入 - >附加依赖 并添加完整的lib路径到Include目录。
答案 3 :(得分:5)
对于VS2012或2013,添加到项目属性 - >链接器 - >输入 - >其他依赖关系 - >添加Version.lib