2012-05-28 4 views
2

DLL로 작업하는 것이 처음입니다. 비록 내가 리눅스에서 진지한 C++ 프로그래밍을하고 DLL이 무엇인지 알고있다. 사용자 지정 작업을 사용하여 Windows 설치 프로그램을 코딩해야합니다. 나는 내가 folowing 오류를 얻을 StdAfx.h 함께 파일에 msi.h을 포함 할 때이 들어 나는 비주얼 스튜디오 2010에서 새 DLL 프로젝트를 만듭니다msi.h가 dll에서 컴파일 오류를 제공합니다.

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.cpp에서 떨어져 아무 상관이없는

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

내가 프로젝트의 링커 입력 속성에서 msi.lib에 경로를 추가하는 시도하십시오 StdAfx 헤더이있는 StdAfx.h 함께 파일을 포함합니다. 그것은 작동하지 않았다. 나는 lib 폴더에 경로를 추가하려고했지만 폴더와 폴더도 포함되지 않은 windows sdk 디렉토리를 포함시킵니다. 이것에 대한 이유는 무엇이며 또한 누군가가 나에게이 분야의 초보자 인 것처럼 윈도우 인스톨러로 커스텀 액션을 사용하는 튜토리얼에 대한 포인터를 줄 수 있다면.

답변

3

<msi.h>WINAPI 매크로에 따라 달라집니다 것 같습니다. 따라서, 먼저 <windows.h>을 포함해야합니다 : DLL을 사용하여 작업 할 때 헤더 파일에 대한 특별한 아무것도 없다

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

. 헤더 파일은 이미 익숙한 방식으로 작동합니다.

+0

덕분에 .. 그건 당신이 윈도우 설치에서 사용자 지정 작업에 대한 자습서에 대한 포인터를해야합니까, 또한 ... 일? –

+0

죄송합니다. MSI에 대해 특별히 알고 싶지 않습니다. –

+0

아무런 문제도 .. 어쨌든 .. 고마워. –

관련 문제