time-killer-games Ответов: 1

Использование quicktime в библиотеке DLL C++ (сообщество visual studio 2017, windows)


Я создаю простую библиотеку DLL расширения QuickTime для GameMaker Studio, которая является программным обеспечением для создания игр, которое поддерживает только вызов функций, которые либо имеют двойные, либо char * возвращаемые значения и аргументы (также аргументы HWND).

Вот код моей библиотеки DLL:

#include "stdafx.h"
#include <stdio.h>
#include <comutil.h>
#import "C:\Program Files\QuickTime\QTOLibrary.dll"
#import "C:\Program Files\QuickTime\QTOControl.dll"

using namespace QTOLibrary;
using namespace QTOControlLib;

#define DLL extern "C" _declspec(dllexport)

DLL double qt_initialize()
{
	HRESULT hr = CoInitialize(NULL);
	IQTControl *pQTControl;

	pQTControl->QuickTimeInitialize();

	return(0);
}


DLL double qt_show_movie(char *movie, double keep_aspect_ratio)
{
	IQTControl *pQTControl;

	if (keep_aspect_ratio == (double)true)
	{
		pQTControl->Sizing = qtMovieFitsControlMaintainAspectRatio;
	}
	else
	{
		pQTControl->Sizing = qtMovieFitsControl;
	}

	_bstr_t bstrURL = (_bstr_t)movie;
	pQTControl->BorderStyle = bsNone;
	pQTControl->MovieControllerVisible = FALSE;
	pQTControl->AutoPlay = "True";
	pQTControl->URL = bstrURL;

	return(0);
}

DLL double qt_uninitialize()
{
	IQTControl *pQTControl;

	pQTControl->URL = "";
	pQTControl->QuickTimeTerminate();

	CoUninitialize();

	return(0);
}


Вот ошибки, которые выплевывает форма компиляции сообщества Visual Studio 2017:

------ Build started: Project: QuickTime4GM, Configuration: Release Win32 ------
1>QuickTime4GM.cpp
1>c:\users\razz.desktop3\source\repos\quicktime4gm\quicktime4gm\release\qtocontrol.tlh(161): error C3646: 'Movie': unknown override specifier
1>c:\users\razz.desktop3\source\repos\quicktime4gm\quicktime4gm\release\qtocontrol.tlh(161): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\razz.desktop3\source\repos\quicktime4gm\quicktime4gm\release\qtocontrol.tlh(163): error C3646: 'QuickTime': unknown override specifier
1>c:\users\razz.desktop3\source\repos\quicktime4gm\quicktime4gm\release\qtocontrol.tlh(163): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\razz.desktop3\source\repos\quicktime4gm\quicktime4gm\release\qtocontrol.tlh(248): error C3646: 'GetMovie': unknown override specifier
1>c:\users\razz.desktop3\source\repos\quicktime4gm\quicktime4gm\release\qtocontrol.tlh(248): error C2059: syntax error: '('
1>c:\users\razz.desktop3\source\repos\quicktime4gm\quicktime4gm\release\qtocontrol.tlh(248): error C2238: unexpected token(s) preceding ';'
1>c:\users\razz.desktop3\source\repos\quicktime4gm\quicktime4gm\release\qtocontrol.tlh(249): error C3646: 'GetQuickTime': unknown override specifier
1>c:\users\razz.desktop3\source\repos\quicktime4gm\quicktime4gm\release\qtocontrol.tlh(249): error C2059: syntax error: '('
1>c:\users\razz.desktop3\source\repos\quicktime4gm\quicktime4gm\release\qtocontrol.tlh(249): error C2238: unexpected token(s) preceding ';'
1>c:\users\razz.desktop3\source\repos\quicktime4gm\quicktime4gm\release\qtocontrol.tli(117): error C2039: 'GetMovie': is not a member of 'QTOControlLib::IQTControl'
1>c:\users\razz.desktop3\source\repos\quicktime4gm\quicktime4gm\release\qtocontrol.tlh(148): note: see declaration of 'QTOControlLib::IQTControl'
1>c:\users\razz.desktop3\source\repos\quicktime4gm\quicktime4gm\release\qtocontrol.tli(117): error C2433: 'IQTMoviePtr': 'inline' not permitted on data declarations
1>c:\users\razz.desktop3\source\repos\quicktime4gm\quicktime4gm\release\qtocontrol.tli(117): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\razz.desktop3\source\repos\quicktime4gm\quicktime4gm\release\qtocontrol.tli(117): error C2146: syntax error: missing ';' before identifier 'GetMovie'
1>c:\users\razz.desktop3\source\repos\quicktime4gm\quicktime4gm\release\qtocontrol.tli(119): error C3861: 'get_Movie': identifier not found
1>c:\users\razz.desktop3\source\repos\quicktime4gm\quicktime4gm\release\qtocontrol.tli(120): error C2355: 'this': can only be referenced inside non-static member functions or non-static data member initializers
1>c:\users\razz.desktop3\source\repos\quicktime4gm\quicktime4gm\release\qtocontrol.tli(120): error C2660: '_com_issue_errorex': function does not take 1 arguments
1>c:\users\razz.desktop3\source\repos\quicktime4gm\quicktime4gm\release\qtocontrol.tli(121): error C2064: term does not evaluate to a function taking 2 arguments
1>c:\users\razz.desktop3\source\repos\quicktime4gm\quicktime4gm\release\qtocontrol.tli(121): warning C4508: 'QTOControlLib::GetMovie': function should return a value; 'void' return type assumed
1>c:\users\razz.desktop3\source\repos\quicktime4gm\quicktime4gm\release\qtocontrol.tli(122): error C2617: 'QTOControlLib::GetMovie': inconsistent return statement
1>c:\users\razz.desktop3\source\repos\quicktime4gm\quicktime4gm\release\qtocontrol.tli(117): note: see declaration of 'QTOControlLib::GetMovie'
1>c:\users\razz.desktop3\source\repos\quicktime4gm\quicktime4gm\release\qtocontrol.tli(124): error C2039: 'GetQuickTime': is not a member of 'QTOControlLib::IQTControl'
1>c:\users\razz.desktop3\source\repos\quicktime4gm\quicktime4gm\release\qtocontrol.tlh(148): note: see declaration of 'QTOControlLib::IQTControl'
1>c:\users\razz.desktop3\source\repos\quicktime4gm\quicktime4gm\release\qtocontrol.tli(124): error C2433: 'IQTQuickTimePtr': 'inline' not permitted on data declarations
1>c:\users\razz.desktop3\source\repos\quicktime4gm\quicktime4gm\release\qtocontrol.tli(124): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\razz.desktop3\source\repos\quicktime4gm\quicktime4gm\release\qtocontrol.tli(124): error C2146: syntax error: missing ';' before identifier 'GetQuickTime'
1>c:\users\razz.desktop3\source\repos\quicktime4gm\quicktime4gm\release\qtocontrol.tli(126): error C3861: 'get_QuickTime': identifier not found
1>c:\users\razz.desktop3\source\repos\quicktime4gm\quicktime4gm\release\qtocontrol.tli(127): error C2355: 'this': can only be referenced inside non-static member functions or non-static data member initializers
1>c:\users\razz.desktop3\source\repos\quicktime4gm\quicktime4gm\release\qtocontrol.tli(127): error C2660: '_com_issue_errorex': function does not take 1 arguments
1>c:\users\razz.desktop3\source\repos\quicktime4gm\quicktime4gm\release\qtocontrol.tli(128): error C2064: term does not evaluate to a function taking 2 arguments
1>c:\users\razz.desktop3\source\repos\quicktime4gm\quicktime4gm\release\qtocontrol.tli(128): warning C4508: 'QTOControlLib::GetQuickTime': function should return a value; 'void' return type assumed
1>c:\users\razz.desktop3\source\repos\quicktime4gm\quicktime4gm\release\qtocontrol.tli(129): error C2617: 'QTOControlLib::GetQuickTime': inconsistent return statement
1>c:\users\razz.desktop3\source\repos\quicktime4gm\quicktime4gm\release\qtocontrol.tli(124): note: see declaration of 'QTOControlLib::GetQuickTime'
1>Done building project "QuickTime4GM.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========


Я понятия не имею, что означают эти ошибки и почему.

Похоже, что все ошибки ссылаются на "qtocontrol.tlh", который Visual Studio автоматически генерирует при сборке, потому что я импортировал элемент управления ActiveX (в данном случае "QTOControl.dll").

Вот содержимое файла "qtocontrol.tlh":

// Created by Microsoft (R) C/C++ Compiler Version 14.11.25547.0 (603b8d8c).
//
// c:\users\razz.desktop3\source\repos\quicktime4gm\quicktime4gm\release\qtocontrol.tlh
//
// C++ source equivalent of Win32 type library C:\Program Files\QuickTime\QTOControl.dll
// compiler-generated file created 01/08/18 at 22:16:41 - DO NOT EDIT!

//
// Cross-referenced type libraries:
//
//  #import "C:\Program Files\QuickTime\QTOLibrary.dll"
//

#pragma once
#pragma pack(push, 8)

#include <comdef.h>

namespace QTOControlLib {

//
// Forward references and typedefs
//

struct __declspec(uuid("7b92f833-027d-402b-bff9-a67697366f4e"))
/* LIBID */ __QTOControlLib;
enum BorderStylesEnum;
enum InitializeQTMLOptionsEnum;
enum QTInitializeQTMLFlagsEnum;
enum QTSizingModeEnum;
enum QTOpenMovieFlagsEnum;
enum QTFullScreenFlagsEnum;
enum QTFullScreenSizingModeEnum;
enum QTStatusCodeTypesEnum;
enum QTStatusCodesEnum;
enum QTErrorEventOriginEnum;
struct __declspec(uuid("89f5e74b-641d-48bd-bf81-dadce7dc83fc"))
/* dual interface */ IQTControl;
struct __declspec(uuid("614e1495-1014-44f8-b350-5344c0770c1e"))
/* dispinterface */ _IQTControlEvents;
struct __declspec(uuid("9b1b71f6-6c61-463e-abdb-88667073d16b"))
/* interface */ IQTControlParams;
struct /* coclass */ QTControl;
struct /* coclass */ QTControlPropPage;

//
// Smart pointer typedef declarations
//

_COM_SMARTPTR_TYPEDEF(IQTControl, __uuidof(IQTControl));
_COM_SMARTPTR_TYPEDEF(_IQTControlEvents, __uuidof(_IQTControlEvents));
_COM_SMARTPTR_TYPEDEF(IQTControlParams, __uuidof(IQTControlParams));

//
// Type library items
//

enum BorderStylesEnum
{
    bsNone = 0,
    bsPlain = 1,
    bs3D = 2
};

enum InitializeQTMLOptionsEnum
{
    qtocInitializeQTMLStandard = 0
};

enum QTInitializeQTMLFlagsEnum
{
    qtInitializeQTMLFlagNoSound = 1,
    qtInitializeQTMLFlagUseGDI = 2,
    qtInitializeQTMLFlagDisableDirectSound = 4,
    qtInitializeQTMLFlagUseExclusiveFullScreenMode = 8
};

enum QTSizingModeEnum
{
    qtControlFitsMovie = 0,
    qtMovieFitsControl = 1,
    qtMovieFitsControlMaintainAspectRatio = 2,
    qtMovieCenteredInControl = 3,
    qtManualSizing = 4
};

enum QTOpenMovieFlagsEnum
{
    qtOpenMovieFlagActive = 1,
    qtOpenMovieFlagDontResolveDataRefs = 2,
    qtOpenMovieFlagDontAskUnresolvedDataRefs = 4,
    qtOpenMovieFlagDontAutoAlternates = 8,
    qtOpenMovieFlagAsyncOK = 256,
    qtOpenMovieFlagIdleImportOK = 1024,
    qtOpenMovieFlagDontInteractWithUser = 2048,
    qtOpenMovieDefaultFlags = 1025
};

enum QTFullScreenFlagsEnum
{
    qtFullScreenFlagHideCursor = 1,
    qtFullScreenFlagAllowEvents = 2,
    qtFullScreenFlagDontChangeMenuBar = 4,
    qtFullScreenDefaultFlags = 6
};

enum QTFullScreenSizingModeEnum
{
    qtFullScreenMovieFitsMonitor = 1,
    qtFullScreenMovieFitsMonitorMaintainAspectRatio = 2,
    qtFullScreenMovieCenteredInMonitor = 3,
    qtFullScreenManualSizing = 4
};

enum QTStatusCodeTypesEnum
{
    qtStatusCodeTypeControl = 0,
    qtStatusCodeTypeMovieLoadState = 2
};

enum QTStatusCodesEnum
{
    qtStatusNone = 0,
    qtStatusConnecting = 2,
    qtStatusNegotiating = 5,
    qtStatusRequestedData = 11,
    qtStatusBuffering = 12,
    qtStatusURLChanged = 4096,
    qtStatusFullScreenBegin = 4097,
    qtStatusFullScreenEnd = 4098,
    qtStatusMovieLoadFinalize = 4099,
    qtMovieLoadStateError = -1,
    qtMovieLoadStateLoading = 1000,
    qtMovieLoadStateLoaded = 2000,
    qtMovieLoadStatePlayable = 10000,
    qtMovieLoadStatePlaythroughOK = 20000,
    qtMovieLoadStateComplete = 100000
};

enum QTErrorEventOriginEnum
{
    qtErrorEventOriginControl = 0,
    qtErrorEventOriginMovie = 1,
    qtErrorEventOriginQuickTime = 2
};

struct __declspec(uuid("89f5e74b-641d-48bd-bf81-dadce7dc83fc"))
IQTControl : IDispatch
{
    //
    // Property data
    //

    __declspec(property(get=GetBorderStyle,put=PutBorderStyle))
    enum BorderStylesEnum BorderStyle;
    __declspec(property(get=GetBorderColor,put=PutBorderColor))
    OLE_COLOR BorderColor;
    __declspec(property(get=GetURL,put=PutURL))
    _bstr_t URL;
    __declspec(property(get=GetMovie))
    IQTMoviePtr Movie;
    __declspec(property(get=GetQuickTime))
    IQTQuickTimePtr QuickTime;
    __declspec(property(get=GetErrorCode))
    long ErrorCode;
    __declspec(property(get=GetBackColor,put=PutBackColor))
    OLE_COLOR BackColor;
    __declspec(property(get=GetIsQuickTimeAvailable))
    VARIANT_BOOL IsQuickTimeAvailable[];
    __declspec(property(get=GetQuickTimeVersion))
    long QuickTimeVersion;
    __declspec(property(get=Get_MovieHandle,put=Put_MovieHandle))
    long _MovieHandle;
    __declspec(property(get=Get_MovieControllerHandle))
    long _MovieControllerHandle;
    __declspec(property(get=GetMovieControllerVisible,put=PutMovieControllerVisible))
    VARIANT_BOOL MovieControllerVisible;
    __declspec(property(get=GetScaleX,put=PutScaleX))
    float ScaleX;
    __declspec(property(get=GetScaleY,put=PutScaleY))
    float ScaleY;
    __declspec(property(get=GetFullScreenMonitorNumber,put=PutFullScreenMonitorNumber))
    long FullScreenMonitorNumber;
    __declspec(property(get=GetFileName,put=PutFileName))
    _bstr_t FileName;
    __declspec(property(get=GetFullScreenSizing,put=PutFullScreenSizing))
    enum QTFullScreenSizingModeEnum FullScreenSizing;
    __declspec(property(get=GetFullScreen,put=PutFullScreen))
    VARIANT_BOOL FullScreen;
    __declspec(property(get=GetErrorHandling,put=PutErrorHandling))
    long ErrorHandling;
    __declspec(property(get=GetNewMovieFlags,put=PutNewMovieFlags))
    long NewMovieFlags;
    __declspec(property(get=GetSizing,put=PutSizing))
    enum QTSizingModeEnum Sizing;
    __declspec(property(get=GetVersion))
    _bstr_t Version;
    __declspec(property(get=GetFullScreenFlags,put=PutFullScreenFlags))
    long FullScreenFlags;
    __declspec(property(get=GetFullScreenEndKeyCode,put=PutFullScreenEndKeyCode))
    long FullScreenEndKeyCode;
    __declspec(property(get=GetFullScreenHWND))
    long FullScreenHWND;
    __declspec(property(get=GetAutoPlay,put=PutAutoPlay))
    _bstr_t AutoPlay;
    __declspec(property(get=GethWnd))
    long hWnd;
    __declspec(property(get=GetBaseURL,put=PutBaseURL))
    _bstr_t BaseURL;

    //
    // Wrapper methods for error-handling
    //

    HRESULT ShowAboutBox ( );
    void PutBackColor (
        OLE_COLOR pclr );
    OLE_COLOR GetBackColor ( );
    void PutBorderColor (
        OLE_COLOR pclr );
    OLE_COLOR GetBorderColor ( );
    void PutBorderStyle (
        enum BorderStylesEnum pstyle );
    enum BorderStylesEnum GetBorderStyle ( );
    long QuickTimeInitialize (
        const _variant_t & InitOptions = vtMissing,
        const _variant_t & InitFlags = vtMissing );
    HRESULT QuickTimeTerminate ( );
    _bstr_t GetURL ( );
    void PutURL (
        _bstr_t pVal );
    _bstr_t GetFileName ( );
    void PutFileName (
        _bstr_t pVal );
    HRESULT _get_DataRef (
        long * pDataRef,
        long * pDataRefType );
    HRESULT _put_DataRef (
        long inDataRef,
        long inDataRefType,
        const _variant_t & inNewMovieFlags = vtMissing );
    HRESULT CreateNewMovie (
        const _variant_t & movieIsActive = vtMissing );
    HRESULT CreateNewMovieFromImages (
        _bstr_t bstrFirstFilePath,
        float rate,
        VARIANT_BOOL rateIsFramesPerSecond );
    IQTMoviePtr GetMovie ( );
    IQTQuickTimePtr GetQuickTime ( );
    long GetErrorCode ( );
    _variant_t Get_Property (
        long propertyClass,
        long propertyID );
    void Put_Property (
        long propertyClass,
        long propertyID,
        const _variant_t & pVal );
    VARIANT_BOOL GetIsQuickTimeAvailable (
        long howToCheck );
    long GetQuickTimeVersion ( );
    long Get_MovieHandle ( );
    void Put_MovieHandle (
        long pVal );
    long Get_MovieControllerHandle ( );
    long GethWnd ( );
    VARIANT_BOOL GetMovieControllerVisible ( );
    void PutMovieControllerVisible (
        VARIANT_BOOL pVal );
    float GetScaleX ( );
    void PutScaleX (
        float pVal );
    float GetScaleY ( );
    void PutScaleY (
        float pVal );
    HRESULT SetScale (
        float x,
        const _variant_t & y = vtMissing );
    void PutFullScreen (
        VARIANT_BOOL pVal );
    VARIANT_BOOL GetFullScreen ( );
    void PutFullScreenFlags (
        long pVal );
    long GetFullScreenFlags ( );
    void PutFullScreenMonitorNumber (
        long pVal );
    long GetFullScreenMonitorNumber ( );
    void PutFullScreenEndKeyCode (
        long pVal );
    long GetFullScreenEndKeyCode ( );
    long GetFullScreenHWND ( );
    void PutFullScreenSizing (
        enum QTFullScreenSizingModeEnum psizingOption );
    enum QTFullScreenSizingModeEnum GetFullScreenSizing ( );
    void PutErrorHandling (
        long pVal );
    long GetErrorHandling ( );
    void PutSizing (
        enum QTSizingModeEnum psizingOption );
    enum QTSizingModeEnum GetSizing ( );
    _bstr_t GetVersion ( );
    void PutNewMovieFlags (
        long pVal );
    long GetNewMovieFlags ( );
    _bstr_t GetAutoPlay ( );
    void PutAutoPlay (
        _bstr_t pVal );
    _bstr_t GetBaseURL ( );
    void PutBaseURL (
        _bstr_t pVal );
    HRESULT MovieResizingLock ( );
    HRESULT MovieResizingUnlock ( );
    HRESULT SetSizing (
        enum QTSizingModeEnum sizingOption,
        VARIANT_BOOL forceSizeUpdate );

    //
    // Raw methods provided by interface
    //

      virtual HRESULT __stdcall raw_ShowAboutBox ( ) = 0;
      virtual HRESULT __stdcall put_BackColor (
        /*[in]*/ OLE_COLOR pclr ) = 0;
      virtual HRESULT __stdcall get_BackColor (
        /*[out,retval]*/ OLE_COLOR * pclr ) = 0;
      virtual HRESULT __stdcall put_BorderColor (
        /*[in]*/ OLE_COLOR pclr ) = 0;
      virtual HRESULT __stdcall get_BorderColor (
        /*[out,retval]*/ OLE_COLOR * pclr ) = 0;
      virtual HRESULT __stdcall put_BorderStyle (
        /*[in]*/ enum BorderStylesEnum pstyle ) = 0;
      virtual HRESULT __stdcall get_BorderStyle (
        /*[out,retval]*/ enum BorderStylesEnum * pstyle ) = 0;
      virtual HRESULT __stdcall raw_QuickTimeInitialize (
        /*[in]*/ VARIANT InitOptions,
        /*[in]*/ VARIANT InitFlags,
        /*[out,retval]*/ long * pVal ) = 0;
      virtual HRESULT __stdcall raw_QuickTimeTerminate ( ) = 0;
      virtual HRESULT __stdcall get_URL (
        /*[out,retval]*/ BSTR * pVal ) = 0;
      virtual HRESULT __stdcall put_URL (
        /*[in]*/ BSTR pVal ) = 0;
      virtual HRESULT __stdcall get_FileName (
        /*[out,retval]*/ BSTR * pVal ) = 0;
      virtual HRESULT __stdcall put_FileName (
        /*[in]*/ BSTR pVal ) = 0;
      virtual HRESULT __stdcall raw__get_DataRef (
        /*[out]*/ long * pDataRef,
        /*[out]*/ long * pDataRefType ) = 0;
      virtual HRESULT __stdcall raw__put_DataRef (
        /*[in]*/ long inDataRef,
        /*[in]*/ long inDataRefType,
        /*[in]*/ VARIANT inNewMovieFlags = vtMissing ) = 0;
      virtual HRESULT __stdcall raw_CreateNewMovie (
        /*[in]*/ VARIANT movieIsActive = vtMissing ) = 0;
      virtual HRESULT __stdcall raw_CreateNewMovieFromImages (
        /*[in]*/ BSTR bstrFirstFilePath,
        /*[in]*/ float rate,
        /*[in]*/ VARIANT_BOOL rateIsFramesPerSecond ) = 0;
      virtual HRESULT __stdcall get_Movie (
        /*[out,retval]*/ struct IQTMovie * * pVal ) = 0;
      virtual HRESULT __stdcall get_QuickTime (
        /*[out,retval]*/ struct IQTQuickTime * * pVal ) = 0;
      virtual HRESULT __stdcall get_ErrorCode (
        /*[out,retval]*/ long * pVal ) = 0;
      virtual HRESULT __stdcall get__Property (
        /*[in]*/ long propertyClass,
        /*[in]*/ long propertyID,
        /*[out,retval]*/ VARIANT * pVal ) = 0;
      virtual HRESULT __stdcall put__Property (
        /*[in]*/ long propertyClass,
        /*[in]*/ long propertyID,
        VARIANT pVal ) = 0;
      virtual HRESULT __stdcall get_IsQuickTimeAvailable (
        /*[in]*/ long howToCheck,
        /*[out,retval]*/ VARIANT_BOOL * pVal ) = 0;
      virtual HRESULT __stdcall get_QuickTimeVersion (
        /*[out,retval]*/ long * pVal ) = 0;
      virtual HRESULT __stdcall get__MovieHandle (
        /*[out,retval]*/ long * pVal ) = 0;
      virtual HRESULT __stdcall put__MovieHandle (
        /*[in]*/ long pVal ) = 0;
      virtual HRESULT __stdcall get__MovieControllerHandle (
        /*[out,retval]*/ long * pVal ) = 0;
      virtual HRESULT __stdcall get_hWnd (
        /*[out,retval]*/ long * pVal ) = 0;
      virtual HRESULT __stdcall get_MovieControllerVisible (
        /*[out,retval]*/ VARIANT_BOOL * pVal ) = 0;
      virtual HRESULT __stdcall put_MovieControllerVisible (
        /*[in]*/ VARIANT_BOOL pVal ) = 0;
      virtual HRESULT __stdcall get_ScaleX (
        /*[out,retval]*/ float * pVal ) = 0;
      virtual HRESULT __stdcall put_ScaleX (
        /*[in]*/ float pVal ) = 0;
      virtual HRESULT __stdcall get_ScaleY (
        /*[out,retval]*/ float * pVal ) = 0;
      virtual HRESULT __stdcall put_ScaleY (
        /*[in]*/ float pVal ) = 0;
      virtual HRESULT __stdcall raw_SetScale (
        /*[in]*/ float x,
        /*[in]*/ VARIANT y = vtMissing ) = 0;
      virtual HRESULT __stdcall put_FullScreen (
        /*[in]*/ VARIANT_BOOL pVal ) = 0;
      virtual HRESULT __stdcall get_FullScreen (
        /*[out,retval]*/ VARIANT_BOOL * pVal ) = 0;
      virtual HRESULT __stdcall put_FullScreenFlags (
        /*[in]*/ long pVal ) = 0;
      virtual HRESULT __stdcall get_FullScreenFlags (
        /*[out,retval]*/ long * pVal ) = 0;
      virtual HRESULT __stdcall put_FullScreenMonitorNumber (
        /*[in]*/ long pVal ) = 0;
      virtual HRESULT __stdcall get_FullScreenMonitorNumber (
        /*[out,retval]*/ long * pVal ) = 0;
      virtual HRESULT __stdcall put_FullScreenEndKeyCode (
        /*[in]*/ long pVal ) = 0;
      virtual HRESULT __stdcall get_FullScreenEndKeyCode (
        /*[out,retval]*/ long * pVal ) = 0;
      virtual HRESULT __stdcall get_FullScreenHWND (
        /*[out,retval]*/ long * pVal ) = 0;
      virtual HRESULT __stdcall put_FullScreenSizing (
        /*[in]*/ enum QTFullScreenSizingModeEnum psizingOption ) = 0;
      virtual HRESULT __stdcall get_FullScreenSizing (
        /*[out,retval]*/ enum QTFullScreenSizingModeEnum * psizingOption ) = 0;
      virtual HRESULT __stdcall put_ErrorHandling (
        /*[in]*/ long pVal ) = 0;
      virtual HRESULT __stdcall get_ErrorHandling (
        /*[out,retval]*/ long * pVal ) = 0;
      virtual HRESULT __stdcall put_Sizing (
        /*[in]*/ enum QTSizingModeEnum psizingOption ) = 0;
      virtual HRESULT __stdcall get_Sizing (
        /*[out,retval]*/ enum QTSizingModeEnum * psizingOption ) = 0;
      virtual HRESULT __stdcall get_Version (
        /*[out,retval]*/ BSTR * pVal ) = 0;
      virtual HRESULT __stdcall put_NewMovieFlags (
        /*[in]*/ long pVal ) = 0;
      virtual HRESULT __stdcall get_NewMovieFlags (
        /*[out,retval]*/ long * pVal ) = 0;
      virtual HRESULT __stdcall get_AutoPlay (
        /*[out,retval]*/ BSTR * pVal ) = 0;
      virtual HRESULT __stdcall put_AutoPlay (
        /*[in]*/ BSTR pVal ) = 0;
      virtual HRESULT __stdcall get_BaseURL (
        /*[out,retval]*/ BSTR * pVal ) = 0;
      virtual HRESULT __stdcall put_BaseURL (
        /*[in]*/ BSTR pVal ) = 0;
      virtual HRESULT __stdcall raw_MovieResizingLock ( ) = 0;
      virtual HRESULT __stdcall raw_MovieResizingUnlock ( ) = 0;
      virtual HRESULT __stdcall raw_SetSizing (
        /*[in]*/ enum QTSizingModeEnum sizingOption,
        /*[in]*/ VARIANT_BOOL forceSizeUpdate ) = 0;
};

struct __declspec(uuid("614e1495-1014-44f8-b350-5344c0770c1e"))
_IQTControlEvents : IDispatch
{
    //
    // Wrapper methods for error-handling
    //

    // Methods:
    HRESULT QTEvent (
        long EventClass,
        long EventID,
        long Phase,
        struct IQTEventObject * EventObject,
        VARIANT_BOOL * Cancel );
    HRESULT SizeChanged (
        long Width,
        long Height );
    HRESULT Error (
        long ErrorCode,
        long Origin );
    HRESULT StatusUpdate (
        long StatusCodeType,
        long StatusCode,
        _bstr_t StatusMessage );
    HRESULT MouseDown (
        short Button,
        short Shift,
        short x,
        short y );
    HRESULT MouseUp (
        short Button,
        short Shift,
        short x,
        short y );
    HRESULT MouseMove (
        short Button,
        short Shift,
        short x,
        short y );
};

struct __declspec(uuid("9b1b71f6-6c61-463e-abdb-88667073d16b"))
IQTControlParams : IUnknown
{};

struct __declspec(uuid("24ba3caf-4be8-4aec-a7c8-6f47d5684602"))
QTControl;
    // [ default ] interface IQTControl
    // [ default, source ] dispinterface _IQTControlEvents
    // interface _IQTControlFireEvent

struct __declspec(uuid("a6c538c6-4a26-4839-b0d2-bf0406a4b299"))
QTControlPropPage;
    // [ default ] interface IUnknown

//
// Wrapper method implementations
//

#include "c:\users\razz.desktop3\source\repos\quicktime4gm\quicktime4gm\release\qtocontrol.tli"

} // namespace QTOControlLib

#pragma pack(pop)


Что я уже пробовал:

Я не могу ничего сделать, чтобы исправить это, потому что я не знаю, в чем проблема. Я везде гуглил, и это все, что я мог сделать, но безуспешно.

Richard MacCutchan

Такого рода ошибки обычно указывают на то, что в источниках отсутствует какая-то существенная информация. Скорее всего, некоторые #define или #include, которые требуются заголовком QT. Документация должна помочь выяснить, что это такое.

time-killer-games

где находится документация? Я искал его повсюду буквально месяц.

Richard MacCutchan

Поскольку у вас есть заголовки QuickTime в вашей системе, я предполагаю, что вы получили их с веб-сайта QuickTime. Это казалось бы логичным местом для поиска документации или даже справочных форумов.

time-killer-games

У меня нет никаких заголовков quicktime. Я скачал quicktime и DLL-файлы activex control, которые шли вместе с ним, - это все, что у меня есть. Я была бы очень признательна, если бы вы не захотели помочь мне хотя бы не вести себя саркастично, как будто я глупая или что-то в этом роде.

time-killer-games

Тот, кто оценил этот вопрос на 1 звезду, похоже, не понимает, что я объяснил свою ситуацию как можно лучше.

1 Ответов

Рейтинг:
1

KarstenK

Это типично для некоторых заголовков, которые не включены правильно. Используйте относительные пути, потому что полные пути опасны.

Я твой случай тот первая ошибка разве что Iqtmoviept не объявлен и так является началом всех остальных проблем. (Это вы должны были бы найти сами). Возможно, что код исправляет все:

using namespace QTOLibrary;
Удалите файл tlh и повторите попытку после исправления. Взгляните на это Проект Github для некоторых примеров кода.


time-killer-games

Привет! Я попробовал добавить:

использование пространства имен QTOLibrary;

Как вы и предполагали, и до сих пор есть большинство тех же ошибок. Смотрите мой обновленный вопрос для получения более подробной информации. Спасибо за помощь! :) (я также удалил оригинальный файл *.tlh). Я не знаю, как указать относительный путь в этом случае, потому что путь к библиотекам DLL ActiveX не находится в корневой или подпапке каталога импорта.

Может быть, мне не хватает какого-то QuickTime SDK или необходимых заголовков, которые я должен получить от Apple?