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

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

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

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

Q&A

3回答

1920閲覧

外部シンボル"~~"は未解決です。はどういうことですか?

zakky79

総合スコア23

C++

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

0グッド

0クリップ

投稿2017/11/01 17:17

エラーで外部シンボルは"~~"は未解決です。とでます。
これはリンカーの部分でおかしい箇所があるのでしょうか?それともプログラム的におかしいのでしょうか。下記のプログラムのMIDIOut_GetDeviceNameWで、外部シンボル "__imp_midiOutGetDevCapsW" は未解決です。というエラーが出ます。

c++

1#include <stdio.h> 2#include <tchar.h> 3#include <windows.h> 4#include "MIDIIO.h" 5#include "....\MIDIOLib1.1\MIDIIO.h" 6 7#ifndef MIN 8#define MIN(A,B) ((A)>(B)?(B):(A)) 9#endif 10 11long __stdcall MIDIOut_GetDeviceNameW(long lID, wchar_t* pszDeviceName, long lLen) { 12 int nRet; 13 MIDIOUTCAPSW tagMIDIOutCaps; 14 memset(&tagMIDIOutCaps, 0, sizeof(MIDIOUTCAPSW)); 15 nRet = midiOutGetDevCapsW(lID, &tagMIDIOutCaps, sizeof(MIDIOUTCAPSW)); 16 if (nRet != MMSYSERR_NOERROR) { 17 return 0; 18 } 19 memset(pszDeviceName, 0, lLen * sizeof(wchar_t)); 20 lLen = MIN(lLen - 1, (long)wcslen(tagMIDIOutCaps.szPname)); 21 wcsncpy(pszDeviceName, tagMIDIOutCaps.szPname, lLen); 22 return lLen; 23} 24 int main() { 25}

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

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

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

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

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

guest

回答3

0

先日からやりたいことが判然としないです。
MIDIIOライブラリを利用してMIDIのアプリを作りたいのか、MIDIIOと同じことをやりたいのか。
過去質問からすると前者でしょうか。
今回提示されているコードは後者になります。
MIDIOut_GetDeviceNameWはMIDIIOライブラリに含まれる関数なので、質問者様が実装する必要はありません。
以前にも回答しましたが、MIDIIO.hを適切にインクルードし、MIDIIO.libを適切にリンクし、MIDIIO.dllを適切にフォルダに配置してあげれば使えるようになるはずです。
MIDIIOライブラリとは何か、使うにはどうしたらよいのか、マニュアルを良く読んでください。
ダウンロードしたファイルのdocsフォルダにマニュアルがあります。
「付録A よくある質問(F.A.Q)」が参考になるでしょう。

投稿2017/11/02 01:49

ttyp03

総合スコア16998

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

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

0

winmm.libをリンクしてください。
Visual studioのプロジェクトの設定で行うか

#pragma comment(lib,"winmm.lib")

をソースコードに追加してください。

投稿2017/11/02 02:46

hmmm

総合スコア818

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

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

0

midiOutGetDevCapsWメソッドの型宣言がヘッダファイルに書かれていないため、コンパイラが、"midiOutGetDevCapsWメソッドが何なのか判りません(泣き)!"という悲鳴が上げたのです。

midiOutGetDevCapsWはmmsystem.h 内で宣言されているはずですので、"MIDIIO.h"もしくは"....\MIDIOLib1.1\MIDIIO.h"に、以下の行を追加すれば解決すると思います。

#include <mmsystem.h>

投稿2017/11/02 00:22

coco_bauer

総合スコア6915

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問