Невозможно преобразовать int в LPUNIT - PullRequest
0 голосов
/ 08 декабря 2010

У меня ошибка с этим codie.

'midiInGetID': невозможно преобразовать параметр 2 из 'int *' в 'LPUINT' Что означают int * и LPUNIT?

struct midi_in_list_node
{
    int midi_in_number;
    HMIDIIN midi_in;
    struct midi_in_list_node *next_midi_in_list_node;
};

struct midi_in_list_node *first_midi_in_list_node = NULL;

void CALLBACK midi_in_handler(HMIDIIN midi_in, UINT msg_type, DWORD user_data, DWORD midi_msg, DWORD param2)
{
    int midi_in_number;

    midiInGetID(midi_in, &midi_in_number);

    if (msg_type == MIM_DATA)
    {

После перехода на UINT у меня появляется другая ошибка:

1>------ Build started: Project: MIDI, Configuration: Debug Win32 ------
1>Compiling...
1>MIDI.cpp
1>c:\users\wildfire\documents\visual studio 2008\projects\midi\midi\midi.cpp(103) : warning C4996: 'sscanf': This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\stdio.h(324) : see declaration of 'sscanf'
1>Linking...
1>MIDI.obj : error LNK2019: unresolved external symbol __imp__midiInGetID@8 referenced in function "void __stdcall midi_in_handler(struct HMIDIIN__ *,unsigned int,unsigned long,unsigned long,unsigned long)" (?midi_in_handler@@YGXPAUHMIDIIN__@@IKKK@Z)
1>MIDI.obj : error LNK2019: unresolved external symbol __imp__midiInClose@4 referenced in function "int __stdcall control_handler(unsigned long)" (?control_handler@@YGHK@Z)
1>MIDI.obj : error LNK2019: unresolved external symbol __imp__midiInStop@4 referenced in function "int __stdcall control_handler(unsigned long)" (?control_handler@@YGHK@Z)
1>MIDI.obj : error LNK2019: unresolved external symbol __imp__midiInStart@4 referenced in function _main
1>MIDI.obj : error LNK2019: unresolved external symbol __imp__midiInOpen@20 referenced in function _main
1>C:\Users\Wildfire\Documents\Visual Studio 2008\Projects\MIDI\Debug\MIDI.exe : fatal error LNK1120: 5 unresolved externals
1>Build log was saved at "file://c:\Users\Wildfire\Documents\Visual Studio 2008\Projects\MIDI\MIDI\Debug\BuildLog.htm"
1>MIDI - 6 error(s), 1 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Ответы [ 2 ]

1 голос
/ 08 декабря 2010

В ответ на ваши новые проблемы вам нужно связать ваш проект со статической библиотекой winmm.lib.Для этого откройте Настройки проекта и перейдите к Компоновщик Ввод Дополнительные зависимости и добавьте winmm.lib к этому тексту.box.

Когда вы получаете такие ошибки, как «Неразрешенный внешний символ», это означает, что вы не связываетесь с нужной библиотекой.Чтобы выяснить, что такое правильная библиотека, посмотрите документацию (например, здесь - это документация для midiInGetID).В разделе Требования в нем указана winmm.lib в качестве необходимой библиотеки.

1 голос
/ 08 декабря 2010

LPUNIT не совпадает с LPUINT. LPUINT = L ong P ointer to U nsigned int .

Просто сделай

UINT midi_in_number;
midiInGetID(midi_in, &midi_in_number);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...