C ++ / C путаница -- c++ поле с участием c поле с участием midi пол Связанный проблема

c++ / c confusion


1
vote

проблема

русский

Я пытаюсь сделать небольшое приложение в 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): Ошибка C4430: Отсутствует спецификатор типа - INT предполагается. Примечание: C ++ не поддерживает 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  * rief 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__   
Английский оригинал

Im trying to make a small app in c++ that saves midifiles with this library. http://musicnote.sourceforge.net/docs/html/index.html

The sample code that is given on the homepage looks like this.

 #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     } 

This piece of code won't compile in Visual studio 2008, I get many errors like

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

I don't understand the error or where to start looking... There also was some dll files that can be used instead of this h file.

    #ifndef __MUSICNOTE_LIB_H__EBEE094C_FF6E_43a1_A6CE_D619564F9C6A__ #define __MUSICNOTE_LIB_H__EBEE094C_FF6E_43a1_A6CE_D619564F9C6A__  /** @file MusicNoteLib.h  * rief 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__ 
</div
        
       
       

Список ответов

0
 
vote
vote
Лучший ответ
 

Ошибка на этой строке:

 <код> typedef  void (__stdcall *LPFNTRACEPROC)(void* pUserData, const TCHAR* szTraceMsg);   

Прошло время, так как я сделал C / C ++ «в гневе», поэтому я здесь немного ржавый. Где-то несовмешится тип типа - на самом деле, когда вы замечали, обертывая струну в _T Macro.

 

The error is on this line:

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

It's been a while since I did C/C++ "in anger" so I'm a bit rusty here. There's a type mismatch somewhere - in fact as you spotted by wrapping the string in the _T macro.

</div
 
 
       
       
0
 
vote

Вам нужно включить заголовок (ы), которое объявляет LPFntraceProc и tchar, прежде чем включить MusicNotelib.h в вашем файле CPP. Это может быть Player.h, может быть, нельзя прокомментировать, как предложил Chrisf, это также может быть заголовками Windows.

Основная идея состоит в том, что вам нужно посмотреть на линии, которые компилятор жалуется, выясняется, что символы на этих строках объявлены и включают соответствующие файлы заголовков, которые имеют эти объявления.

 

You need to include the header(s) that declare LPFNTRACEPROC and TCHAR before you include MusicNoteLib.h in your CPP file. It could be Player.h which maybe shouldn't be commented out like ChrisF suggested, it could also be the Windows headers.

The basic idea is that you need to look at the lines the compiler is complaining about, figure out where the symbols on those lines are declared and include the appropriate header files that have those declarations.

</div
 
 

Связанный проблема

13  Как мне построить GCC на Mac?  ( How do i build gcc on a mac ) 
Я хотел бы построить последнюю версию GCC на Mac. У меня есть последний Xcode, но ищу некоторые функции C ++ 0x, которые находятся в более поздних версиях (фу...

0  Как скопировать файлы из установленного местоположения в изолированное хранение в Windows Phone 8  ( How to copy files from installed location to isolated storage in windows phone 8 ) 
Я разрабатываю приложение для WP8 с помощью Cocos2DX. Я не могу найти функцию копирования, которая помогает мне копировать файлы с установленного местоположен...

-2  Как писать сортировать с неизвестным аргументом. Не может повторяться с void * /  ( How write sort with unknown argument cant iterate with void ) 
в этом <код> void* ic = b + j * sz; и это <код> void* jc = ic - sz; lines IDE, написание того, что выражение должно быть указателем на полный тип. Мне нужен...

2  JNI не может найти класс, если аргументы JVM преобразуются из другого типа [Закрыто]  ( Jni cant find the class if the arguments of jvm are converted from other type ) 
<в сторону CLASS = "S-NEWACTS S-WELTIVE__info JS-Post-New Imide MB16« Роль = «Статус»> <Путь d = "M15 6.38A6.48 6.48 0 007.78. 04H-.02A6.49 6.49 0 002.05 ...

1  Eclipse C / C ++ не компилируют исходный код в подпункте  ( Eclipse c c not compiling source code in sub folders ) 
Использование ECLIPSE IDE для разработчиков C / C ++ (см. подробности ниже) Я пытаюсь реорганизовать свой код в подпункте. Однако, если я перемещаю файл исход...

10  Как я могу обнаружить доступ к файлу в Linux?  ( How can i detect file accesses in linux ) 
У меня есть куча потоков и приложений для обработки данных, которые я иногда нужно шпионить, то есть мне нужно знать, какие файлы они читают. Это в основном, ...

58  Пространства имен в C  ( Namespaces in c ) 
Есть ли способ (ab) использовать препроцессор c для эмуляции пространств имен в c ? Я думаю что-то по этим строкам: <код> #define NAMESPACE name_of_ns ...

0  Установите и получите значение разных участников класса в классе  ( Set and get the value of different class members in a class ) 
Я очень новичок в программировании C ++, и я написал простую классную программу для отображения имени и продолжительности проекта. <код> #include<iostream> ...

-2  Umenu.cpp неопределенная справочная ошибка [дубликат]  ( Umenu cpp undefined reference error ) 
<в сторону CLASS = "S-NEWACTS S-WELTIVE__info JS-Post-New Imide MB16« Роль = «Статус»> Этот вопрос уже есть ответы здесь : ...

2  Нечетное поведение шаблона C ++ со статическим элементом vars  ( Odd c template behaviour with static member vars ) 
Этот кусок кода предполагается рассчитать приближение к E (то есть математической константы ~ 2.71828183) при времени компиляции, используя следующий подход...

0  Что это значит, когда в GraphStudio нет ошибки при подключении два фильтра, но они не были подключены  ( What does it mean when in graphstudio there is no error when connection two filt ) 
Когда я пытаюсь подключить два фильтра в GraphStudio, которые не соответствуют, я обычно получаю код ошибки. Однако в моем случае, если я попытаюсь подключить...

0  Новые и удаление контейнеров DLL  ( New and delete container dlls ) 
Я хочу зацепить новые и удалять операторы. Но я не могу найти оригинальные DLL, где проживают эти операторы. Я использовал msvcr90.dll, msvsr90d.dll, msvcrt.d...

18  Как оценивается оператор «если (A && B)»?  ( How an if a b statement is evaluated ) 
<код> -1 Вопрос в том, что утверждение немедленно сломается, чтобы остальное, если был ложный. Будет б даже оценивать? Я спрашиваю это в том случае, если...

3  Проблема с помощью файлов makefile .gch вместо файлов  ( Problem with makefile making gch files instead of o files ) 
Итак, я делаю программу для проверки эффективности определенных структур данных. У меня есть все файлы .h, и я сделал очень ужасную Makefile, что, вероятно, н...

1  Шаблон аргументирован вычет и объединение  ( Template argument deduction and unification ) 
<код> template<typename T> void f1(T t); template<typename T> void f2(const T t); template<typename T> void f3(T& t); template<typename T> void f4(const T...

Связанный проблема

13  Как мне построить GCC на Mac? 
0  Как скопировать файлы из установленного местоположения в изолированное хранение в Windows Phone 8 
-2  Как писать сортировать с неизвестным аргументом. Не может повторяться с void * / 
2  JNI не может найти класс, если аргументы JVM преобразуются из другого типа [Закрыто] 
1  Eclipse C / C ++ не компилируют исходный код в подпункте 
10  Как я могу обнаружить доступ к файлу в Linux? 
58  Пространства имен в C 
0  Установите и получите значение разных участников класса в классе 
-2  Umenu.cpp неопределенная справочная ошибка [дубликат] 
2  Нечетное поведение шаблона C ++ со статическим элементом vars 
0  Что это значит, когда в GraphStudio нет ошибки при подключении два фильтра, но они не были подключены 
0  Новые и удаление контейнеров DLL 
18  Как оценивается оператор «если (A && B)»? 
3  Проблема с помощью файлов makefile .gch вместо файлов 
1  Шаблон аргументирован вычет и объединение 



© 2021 www.qaru.top All Rights Reserved. Q&A House все права защищены


Licensed under cc by-sa 3.0 with attribution required.