|
님께서 말씀하신대로 하니까 에러가 안없어지더군요.
그런데 이렇게 하니까 됐습니다.
MSAcm.pas
ACMOut.pas
ACMIn.pas
ACMConvertor.pas
ACMConvertorReg.pas
위의 파일들을 패키지인스톨시키면
위의 파일들에 해당하는 .hpp 파일이 생성되는데요
이것들을 include\vcl 디렉토리에 넣고
예제를 하나 만들어서 컴파일 하면 아시다시피 에러가 납니다.
[C++ Fatal Error] MSAcm.h(20): F1003 Error directive: MMREG.H version 142 or greater to be included first.
위의 에러이죠.
그런데 mmreg.h에서 버전을 바꿔보기도 해보고 msacm.h에서 조건부매크로를 주석처리해보기도 했지만
여전히 에러들이 없어지지 않았습니다.
그래서 이건 버전문제가 아니라 인클루드의 문제가 아닐까 생각했죠
그래서 msacm.hpp 파일을 열어서 #include "MMReg.h"를 #include "MSAcm.h" 라인위에 추가시켰습니다.
그랬더니 type name expected 에러가 뜨더군요.
그래서 첫번째 에러를 조사해봤습니다.
MSAcm.h 파일에는 다음과 같이 선언되어있더군요
typedef struct tACMDRIVERDETAILSA
{
DWORD cbStruct; // number of valid bytes in structure
FOURCC fccType; // compressor type 'audc'
FOURCC fccComp; // sub-type (not used; reserved)
WORD wMid; // manufacturer id
WORD wPid; // product id
DWORD vdwACM; // version of the ACM *compiled* for
DWORD vdwDriver; // version of the driver
DWORD fdwSupport; // misc. support flags
DWORD cFormatTags; // total unique format tags supported
DWORD cFilterTags; // total unique filter tags supported
HICON hicon; // handle to custom icon
char szShortName[ACMDRIVERDETAILS_SHORTNAME_CHARS];
char szLongName[ACMDRIVERDETAILS_LONGNAME_CHARS];
char szCopyright[ACMDRIVERDETAILS_COPYRIGHT_CHARS];
char szLicensing[ACMDRIVERDETAILS_LICENSING_CHARS];
char szFeatures[ACMDRIVERDETAILS_FEATURES_CHARS];
} ACMDRIVERDETAILSA, *PACMDRIVERDETAILSA, FAR *LPACMDRIVERDETAILSA;
그런데 MSAcm.hpp 파일에는 다음과 같이 선언되어있었죠.
typedef _ACMDRIVERDETAILSA *PAcmDriverDetailsA;
정확하게는 왜 에러가 나야하는지 모르겠지만 왠지 이부분을 주석처리해야 되지 않을까 생각되어서
에러난부분 모두를 주석처리했습니다.
혹시 이부분에 대해서 왜 이렇게 되는지 아시면 설명좀 부탁드립니다.
그리고 또한곳이 에러가나는데
ACMConvertor.hpp 였습니다.
_ACMFORMATCHOOSEA FChooseData;
이부분이 에러가 났죠.
마찬가지로 type name expected 에러였습니다.
그래서 MSAcm.h 를 찾아보았더니
typedef struct tACMFORMATCHOOSEA
{
DWORD cbStruct; // sizeof(ACMFORMATCHOOSE)
DWORD fdwStyle; // chooser style flags
HWND hwndOwner; // caller's window handle
LPWAVEFORMATEX pwfx; // ptr to wfx buf to receive choice
DWORD cbwfx; // size of mem buf for pwfx
LPCSTR pszTitle; // dialog box title bar
char szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS];
char szFormat[ACMFORMATDETAILS_FORMAT_CHARS];
LPSTR pszName; // custom name selection
DWORD cchName; // size in chars of mem buf for pszName
DWORD fdwEnum; // format enumeration restrictions
LPWAVEFORMATEX pwfxEnum; // format describing restrictions
HINSTANCE hInstance; // app instance containing dlg template
LPCSTR pszTemplateName; // custom template name
LPARAM lCustData; // data passed to hook fn.
ACMFORMATCHOOSEHOOKPROCA pfnHook; // ptr to hook function
} ACMFORMATCHOOSEA, *PACMFORMATCHOOSEA, FAR *LPACMFORMATCHOOSEA;
이렇게 되어있더군요 .. 그리고 앞에 언더바가 붙은 이름은 없었습니다.
그래서 언더바를 빼버렸죠.
ACMFORMATCHOOSEA FChooseData; 이렇게 고쳤죠
그리고 한줄 더있었는데
// HACMSTREAM__ *FStreamHandle;
HACMSTREAM *FStreamHandle;
뒤에 언더바 두개 빼버렸습니다.
|