gpt4 book ai didi

windows - msi.h 在 dll 中给出编译错误

转载 作者:可可西里 更新时间:2023-11-01 10:07:58 25 4
gpt4 key购买 nike

我刚开始使用 DLL。尽管我在 Linux 上做过一些严肃的 C++ 编程并且知道 DLL 是什么。我需要使用自定义操作编写 Windows 安装程序。为此,我在 Visual Studio 2010 中创建了一个新的 DLL 项目。当我尝试在 StdAfx.h 文件中包含 msi.h 时,出现以下错误:

1>------ Build started: Project: CustomAction, Configuration: Debug Win32 ------
1> DllEntry.cpp
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\msi.h(86): error C2146: syntax error : missing ';' before identifier 'WINAPI'
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\msi.h(86): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\msi.h(86): error C2146: syntax error : missing ';' before identifier 'MsiCloseHandle'
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\msi.h(86): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
......................

除了包含 StdAfx header 的 StdAfx.cpp 和 StdAfx.h 文件之外,该项目没有任何其他内容:

#include   <msi.h>
#include <msiquery.h>
#include <stdio.h>

我尝试在项目的链接器输入属性中添加指向 msi.lib 的路径。它没有用。我还尝试将路径添加到 lib 文件夹,include 文件夹和 windows sdk 目录的 bin 文件夹,这也没有用。这是什么原因,如果有人可以给我一些关于使用 Windows 安装程序自定义操作的教程,因为我是这个领域的新手。

最佳答案

看起来像<msi.h>取决于 WINAPI宏。因此,您可能需要包括 <windows.h>第一:

#include <windows.h>
#include <msi.h>

使用 DLL 时,头文件没有什么特别之处。头文件的工作方式与您已经习惯的方式相同。

关于windows - msi.h 在 dll 中给出编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10779095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com