2

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ヘッダーとStdAfx.hファイルを含むStdAfx.cpp以外には何もありません。

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

プロジェクトのリンカー入力プロパティでmsi.libにパスを追加してみました。うまくいきませんでした。また、Windows sdkディレクトリのlibフォルダー、includeフォルダー、binフォルダーにパスを追加しようとしましたが、これも機能しませんでした。これの原因は何ですか。また、私はこの分野の初心者なので、Windowsインストーラーでカスタムアクションを使用するためのチュートリアルへのポインターを誰かに教えてもらえますか。

4

1 に答える 1

4

マクロ<msi.h>に依存しているようです。したがって、最初WINAPIに含める必要がある場合があります。<windows.h>

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

DLLを操作する場合、ヘッダーファイルについて特別なことは何もありません。ヘッダーファイルは、すでに慣れている方法と同じように機能します。

于 2012-05-28T03:43:20.153 に答える