我无法弄清楚如何将msi.lib链接到我的Visual Studio C ++项目

时间:2015-03-29 13:32:08

标签: visual-c++ visual-studio-2013 windows-installer

我正在尝试编写一个简单的应用程序,它将枚举我机器上安装的所有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,但这似乎不起作用: Property Page Screenshot

这就像Visual Studio 101,我缺少什么?!

1 个答案:

答案 0 :(得分:1)

转到配置属性&gt;链接器&gt;输入

在附加依赖项中添加msi.lib就是这样!确保使用相同的调用转换,用于构建lib。即stdcall或cdecl。