我正在尝试编写一个简单的应用程序,它将枚举我机器上安装的所有ProductCodes。
我在Visual Studio 2013中开始了一个新项目,但每当我构建时,我都会收到错误:
“LNK2019:函数_main中引用的未解析的外部符号_MsiEnumProductsExA @ 32”
我一直在试图弄清楚如何将msi.lib添加到我的项目包含路径中,但我似乎无法弄明白。
这是我的代码:
#define _WIN32_MSI 300
#include <Windows.h>
#include <iostream>
#include <string>
#include <Msi.h>
using namespace std;
int main() {
// Get a list of all installed MSIs
DWORD index = 0;
TCHAR currentProductCode[40] = {0};
unsigned int result = ERROR_SUCCESS;
// Open an MSI handle
while (ERROR_SUCCESS == result) {
result = MsiEnumProductsEx(NULL, "s-1-1-0",
MSIINSTALLCONTEXT_USERMANAGED | MSIINSTALLCONTEXT_USERUNMANAGED | MSIINSTALLCONTEXT_MACHINE,
index, currentProductCode, NULL, NULL, NULL);
if (result == ERROR_SUCCESS) {
cout << "current ProductCode: " << currentProductCode;
}
index++;
}
return 0;
}
我一直在尝试通过将msi.lib的路径添加到“Library Directories”属性来更新项目的Property Pages,但这似乎不起作用:
这就像Visual Studio 101,我缺少什么?!
答案 0 :(得分:1)
转到配置属性&gt;链接器&gt;输入
在附加依赖项中添加msi.lib就是这样!确保使用相同的调用转换,用于构建lib。即stdcall或cdecl。