[
板情報
|
カテゴリランキング
]
したらばTOP
■掲示板に戻る■
全部
1-100
最新50
| |
はじめまして。
9
:
管理人
:2011/05/21(土) 11:42:34
shunさん
ご質問ありがとうございます。簡単に回答させていただきます。
■1点目
説明が面倒なので省略しておりましたが大体以下の内容です。
DLLを利用する(呼び出す)側のプログラムでDLL内のクラスを利用するには、
利用する側のプログラムでクラスを生成(new)しなければなりません。
しかし、DLLファイルではクラスをエクスポートできない決まり(仕様)があります。
つまり、利用する側のプログラムから直接、DLL内にあるクラスを生成(new)することが
できないのです。
そのため、苦肉の策としてDLL側にDLL内のクラスを生成する関数を用意しています。
VSTではこのクラス生成のための関数がcreateEffectInstance()関数になります。
【イメージ】
NG:AudioEffect* vst = new MyMinimumVST(audioMaster);
(↑呼び出す側で上記のようにnewで生成ができない。)
OK:AudioEffect* vst = createEffectInstance();
(↑苦肉の策としてDLLで用意された関数を利用してvstクラスを生成する。)
■2点目
以下の理由でVSTではmain関数は必要ありません。
main関数はC/C++ではエントリーポイントとして定義されています。
エントリーポイントとは、「プログラムが始まるポイント(関数)」のことです。
つまり、C/C++ではmain関数から始まるように決めて(定義して)います。
エントリーポイントはコンパイラ(VC++)で変更することができます。
DLLもプログラムなので、当然エントリーポイントがありますが、DLLの場合、
DllMain関数になっています。
(つまりDLLを作成するときはmain関数の代わりにDllMain関数をつかいます。)
VSTもDLLの一種なのでDllMain関数から始まる必要があるのですが、
すでにvstplugmain.cppファイルにDllMain関数の内容が記載されているため、
自分でVSTを作成する際には記述する必要がありません。
■3点目
データ型 float**ですが、「floatポインタへのポインタ」という意味です。
「ポインタのポインタ」で調べていただくとわかりやすい説明があるかと
思います。
(ここでの説明はご勘弁ください。ポインタの説明だけでかなりのボリュームに
なりますので…
上記1〜3の内容は、C/C++の知識に加え、Windowsプログラムについて
ご認識いただけると、より理解が深まるかと思います。
最後に有名なWebページですのでご存知かもしれませんが、
以下ページをご紹介させていただきます。
猫でもわかるプログラミング
http://homepage2.nifty.com/c_lang/
新着レスの表示
名前:
E-mail
(省略可)
:
※書き込む際の注意事項は
こちら
※画像アップローダーは
こちら
(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)
スマートフォン版
掲示板管理者へ連絡
無料レンタル掲示板