gpt4 book ai didi

c++/c 困惑

转载 作者:太空宇宙 更新时间:2023-11-04 04:57:59 27 4
gpt4 key购买 nike

我正在尝试用 c++ 制作一个小应用程序,用这个库保存 midifiles。 http://musicnote.sourceforge.net/docs/html/index.html

主页上给出的示例代码如下所示。

 #include "MusicNoteLib.h"
void main()
{
MusicNoteLib::Player player; // Create the Player Object
player.Play("C D E F G A B"); // Play the Music Notes on the default MIDI output port
}

这段代码无法在 Visual Studio 2008 中编译,我会遇到很多错误,例如

MusicNoteLib.h(22) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

我不明白错误或从哪里开始寻找...还有一些 dll 文件可以用来代替这个 h 文件。

    #ifndef __MUSICNOTE_LIB_H__EBEE094C_FF6E_43a1_A6CE_D619564F9C6A__
#define __MUSICNOTE_LIB_H__EBEE094C_FF6E_43a1_A6CE_D619564F9C6A__

/** @file MusicNoteLib.h
* \brief Main header file for accessing the MusicNote Library
*/

/// <Summary>
/// This header file can be included directly in your project or through
/// MusicNoteLib.h of the MusicNoteDll project. If included directly, this
/// will be built directly as a satic library. If included through MusicNoteDll
/// this will use dllImports through MUSICNOTELIB_API
/// </Summary>
#ifndef MUSICNOTELIB_API
#define MUSICNOTELIB_API
#endif // MUSICNOTELIB_API

//#include "Player.h"

namespace MusicNoteLib /// Music Programming Library
{
typedef void (__stdcall *LPFNTRACEPROC)(void* pUserData, const TCHAR* szTraceMsg);
typedef void (__stdcall *LPFNERRORPROC)(void* pUserData, long lErrCode, const TCHAR* szErrorMsg, const TCHAR* szToken);

extern "C"
{
MUSICNOTELIB_API typedef void MStringPlayer;

MUSICNOTELIB_API void* GetCarnaticMusicNoteReader();

/// <Summary>
/// Creates a MusicString Player object.
/// </Summary>
MUSICNOTELIB_API MStringPlayer* CreateMusicStringPlayer();

/// <Summary>
/// Plays Music string notes on the default MIDI Output device with the default Timer Resolution.
/// Use PlayMusicStringWithOpts() to use custom values.
/// @param szMusicNotes the Music string to be played on the MIDI output device
/// @return True if the notes were played successfully, False otherwise
/// </Summary>
MUSICNOTELIB_API bool PlayMusicString(const TCHAR* szMusicNotes);

/// <Summary>
/// Same as PlayMusicString() except that this method accepts Callbacks.
/// The Trace and Error callbacks will be used during the Parse of the Music Notes.
/// @param szMusicNotes the Music string to be played on the MIDI output device
/// @param traceCallbackProc the Callback to used to report Trace messages
/// @param errorCallbackProc the Callback to used to report Error messages
/// @param pUserData any user supplied data that should be sent to the Callback
/// @return True if the notes were played successfully, False otherwise
/// </Summary>
MUSICNOTELIB_API bool PlayMusicStringCB(const TCHAR* szMusicNotes,
LPFNTRACEPROC traceCallbackProc,
LPFNERRORPROC errorCallbackProc,
void* pUserData);

/// <Summary>
/// Plays Music string notes on the given MIDI Output device using the given Timer Resolution.
/// Use PlayMusicString() to use default values.
/// @param szMusicNotes the Music notes to be played
/// @param nMidiOutPortID the device ID of the MIDI output port to be used for the play
/// @param nTimerResMS preferred MIDI timer resolution, in MilliSeconds
/// @return True if Play was successful, False otherwise
/// </Summary>
MUSICNOTELIB_API bool PlayMusicStringWithOpts(const TCHAR* szMusicNotes, int nMidiOutPortID, unsigned int nTimerResMS);

/// <Summary>
/// Same as PlayMusicStringWithOpts() except that this method accepts Callbacks.
/// The Trace and Error callbacks will be used during the Parse of the Music Notes.
/// @param szMusicNotes the Music notes to be played
/// @param nMidiOutPortID the device ID of the MIDI output port to be used for the play
/// @param nTimerResMS preferred MIDI timer resolution, in MilliSeconds
/// @param traceCallbackProc the Callback to used to report Trace messages
/// @param errorCallbackProc the Callback to used to report Error messages
/// @param pUserData any user supplied data that should be sent to the Callback
/// @return True if Play was successful, False otherwise
/// </Summary>
MUSICNOTELIB_API bool PlayMusicStringWithOptsCB(const TCHAR* szMusicNotes,
int nMidiOutPortID,
unsigned int nTimerResMS,
LPFNTRACEPROC traceCallbackProc,
LPFNERRORPROC errorCallbackProc,
void* pUserData);
/// <Summary>
/// Save the given MusicString content into a MIDI output file
/// @param szMusicNotes Music Notes to be converted to MIDI output
/// @param szOutputFilePath path of the MIDI output file
/// @return True if the the content was saved successfully, False otherwise
/// </Summary>
MUSICNOTELIB_API bool SaveAsMidiFile(const TCHAR* szMusicNotes, const char* szOutputFilePath);

//MUSICNOTELIB_API typedef void (*ParseErrorProc)(const MusicNoteLib::CParser*, MusicNoteLib::CParser::ErrorEventHandlerArgs* pEvArgs);
//MUSICNOTELIB_API typedef void (*ParseTraceProc)(const MusicNoteLib::CParser*, MusicNoteLib::CParser::TraceEventHandlerArgs* pEvArgs);

MUSICNOTELIB_API void Parse(const TCHAR* szNotes, LPFNTRACEPROC traceCallbackProc, void* pUserData);

} // extern "C"



} // namespace MusicNoteLib

#endif // __MUSICNOTE_LIB_H__EBEE094C_FF6E_43a1_A6CE_D619564F9C6A__

最佳答案

错误在这一行:

typedef  void (__stdcall *LPFNTRACEPROC)(void* pUserData, const TCHAR* szTraceMsg);

我已经有一段时间没有“一怒之下”使用 C/C++ 了,所以我在这里有点生疏。某处存在类型不匹配 - 事实上,正如您通过将字符串包装在 _T 宏中所发现的那样。

关于c++/c 困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3069120/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com