質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

1115閲覧

MIDIIOライブラリの使い方

zakky79

総合スコア23

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2017/10/25 10:21

編集2017/10/25 11:11

イメージ説明###前提・実現したいこと
MIDIIOライブラリ(http://openmidiproject.osdn.jp/MIDIIOLibrary.html)を使用し、電子ドラムで叩いた音をMIDIで取得したいと思っています。ソフトを使ってMIDIを取得するのではなく、プログラムを起動させ、MIDIを取得したいです。
###発生している問題・エラーメッセージ
デバッグを行ったときに、指定されたファイルが見つかりませんと出ます。

エラーメッセージ エラーのメッセージは画像の通りです。visualstudio内の変更点はプラットフォームを64bitに変更しただけで他は変更していません。 ###該当のソースコード ソースコードは(http://openmidiproject.osdn.jp/MIDIIOLibrary.html)の最新のものをそのまま使用させていただいてます。 ###試したこと 実行の仕方など色々不慣れなので間違えてる可能性もあるので教えてください。 よろしくお願いします。 ###補足情報(言語/FW/ツール等のバージョンなど) c++ 環境:win10 64bit VisualStudio2015

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

LouiS0616

2017/10/25 10:29

具体的なエラーがわかりません。もう少し詳しくエラー内容を記述してください。説明し切れない場合は、スクリーンショットを貼るのも有効です。また、Visual Studio側で特に設定を行った場合、その内容を追記してください。
guest

回答1

0

ベストアンサー

註:以下の回答は、当プログラムを『実行したい』と解釈しての内容となります。
『自分の環境に合わせてビルドしたい』という意味ならば参考にはなりません。


MIDIIO.cファイルはライブラリ作成用のコードですので、実行は出来ません。
コードを眺めると、エントリーポイント(mainなど)がないことがわかるはずです。

まずは、サンプルコードの実行をお勧めします。

C++

1/* 3秒間だけドの音を再生 */ 2#include <stdio.h> 3#include <tchar.h> 4#include <windows.h> 5#include <MIDIIO.h> 6int _tmain () { 7 unsigned char byMIDIMessage1[3] = {0x90, 0x3C, 0x64}; /* NoteOn Ch=0 Key=60 Vel=100 */ 8 unsigned char byMIDIMessage2[3] = {0x90, 0x3C, 0x00}; /* NoteOn Ch=0 Key=60 Vel=0 */ 9 MIDIOut* pMIDIOut = MIDIOut_Open (_T("Microsoft GS Wavetable Synth")); 10 if (pMIDIOut == NULL) { 11 _tprintf (_T("MIDI出力デバイスが開けません。")); 12 return 0; 13 } 14 MIDIOut_PutMIDIMessage (pMIDIOut, byMIDIMessage1, 3); /* ドの音を押す */ 15 Sleep (3000); /* 約3秒待機 */ 16 MIDIOut_PutMIDIMessage (pMIDIOut, byMIDIMessage2, 3); /* ドの音を離す */ 17 MIDIOut_Close (pMIDIOut); /* MIDI出力デバイスを閉じる */ 18 pMIDIOut = NULL; 19 return 1; 20}

このコードを実行するにあたり、注意すべき点があります。
0. x86(32bit)モードにすること
このライブラリは、32bitでビルドされているようです。
これを怠ると、リンク時に次のような警告が出ます。
warning LNK4272: library machine type 'X86' conflicts with target machine type 'x64'
0. ヘッダファイルを参照できること
『追加のインクルードディレクトリ』にMIDIIO.hのあるディレクトリを追加してください。
これを怠ると、コンパイル時に次のようなエラーが出ます。
fatal error C1083: Cannot open include file: 'MIDIIO.h': No such file or directory
0. 使用するライブラリを指定すること
『追加の依存ファイル』にMIDIIOd.libを追加してください。
これを怠ると、リンク時に次のようなエラーが出ます。
error LNK2019: unresolved external symbol MIDIOut_OpenA referenced in function main
0. ライブラリを参照できること
『追加のライブラリディレクトリ』にMIDIIOd.libのあるディレクトリを追加してください。
これを怠ると、リンク時に次のようなエラーが出ます。
fatal error LNK1104: cannot open file 'MIDIIOd.lib'
0. dllファイルを参照できること
Windowsの環境変数PATHを適切に編集して、MIDIIOd.dllにパスを通してください。
あるいは、生成された実行ファイル.exeと同じ階層にMIDIIOd.dllをコピーしてください。
これを怠ると、実行時に次のようなエラーがポップアップします。
システムエラー MIDIIOd.dllが見つからないため、コードの実行を続行できません。後略

ここまで設定して、Win10+VS2015Communityでは実行できました。
一言で『エラーがでる』と言っても、これくらいバリエーションがあるのです。
2から5は全て、『見つかりません』系のエラーです。

投稿2017/10/25 14:09

編集2017/10/25 14:11
LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問