在C ++ DLL中使用quicktime(visual studio 2017社区,windows)

在C ++ DLL中使用quicktime(visual studio 2017社区,windows)

问题描述:

我正在为GameMaker Studio制作一个简单的QuickTime扩展DLL,它是一个游戏创建软件,它只支持具有double或char *返回值和参数的调用函数(HWND参数)。



这是我的DLL的代码:



I'm making a simple QuickTime extension DLL for GameMaker Studio, which is a game creation software, which only supports calling functions that either have double or char * return values and arguments (HWND arguments as well).

Here's my DLL's code:

#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社区编译表格错误的错误:





Here's the errors Visual Studio 2017 Community's compile form is spitting out:

------ 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的文件内容:





I have no idea what any of those errors mean or why.

The errors seem to be all referencing "qtocontrol.tlh", which Visual Studio automatically generates on building, because I imported an ActiveX control, (in this case, "QTOControl.dll").

Here is the file contents of "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)





我的尝试:



我无法尝试任何解决方法,因为我不知道问题是什么。我到处搜索,这是关于我能做的所有事情,并没有成功。



What I have tried:

I'm not able to try anything to fix this because I don't know what the problem is. I've googled everywhere, which is about all I can do, and with no success.

对于某些未正确包含的标题,这是典型的。使用相对路径,因为完整的路径是危险的。



我的情况第一个错误是IQTMoviePtr没有声明,所以是开始的所有其他问题。 (那你应该自己找到的)。也许该代码行修复了所有问题:

It is typical for some headers which arent correctly included. Use relative pathes because full pathes are dangerous.

I your case the first error is that the IQTMoviePtr isnt declared and so is start of the all other problems. (That should you had found by yourself). Maybe that codeline fixes all:
using namespace QTOLibrary;

删除tlh文件并在修复后重试。有关代码示例,请查看 Github项目

Delete the tlh file and retry after fixing. Take a look at that Github project for some code examples.