Visual Studio で作成した独自の DLL でDLL をロードする()を使用したいと考えています。これを成功した人はいますか?
DLL 側でこれを行う方法を示すサンプル ソース コードはどこにありますか。
これが私が行きたい方向です。 ありがとう!
サンプルの VS ソリューション/プロジェクトをダウンロードしてコンパイルできると便利です。
技術サポートから何かを得られるかもしれません。 ExtFunctionTests というファイルが存在する場合があります。これは、DLL との間でデータ型を渡すための完全な例を含む C++ プログラムです。
あるいは、これは正しい方向に進むかもしれません (これは、2009 年に当時人気のあった Visual Studio のバージョンで構築されました。 ここに重要なセクションがあります。 「サウンド」は、この DLL が JMP にサウンドを再生させるために使用されたためです)。
DLL 内の JMP インターフェイス機能:
EXPORTFUNC int __cdecl init( int nCols, int channelMask, int samplesPerSecond, int nRows )
{
if ( theApp.mSoundThread == NULL )
{
theApp.mSoundThread = (SoundThread*)AfxBeginThread( RUNTIME_CLASS(SoundThread), 0, 0, CREATE_SUSPENDED, 0 );
theApp.mSoundThread->init( nCols, channelMask, samplesPerSecond, nRows );
theApp.mSoundThread->ResumeThread();
return 1;
}
return 0;
}
EXPORTFUNC double __cdecl feed( double * matrix, int elements )
{
return theApp.mSoundThread->feed( matrix, elements );
}
LPWSTR g_Declarations = L"\
DeclareFunction(\"init\", Convention( CDECL ), \n\
Arg( Int32, \"nCols\" ), Arg( Int32, \"channelMask\" ), Arg( Int32, \"samplesPerSecond\" ), Arg( Int32, \"nRows\" ), Returns( Int32 ) ) << \n\
DeclareFunction(\"feed\", Convention( CDECL ),\n\
Arg(Double, Array, \"array of nCols channels X nRows samples, -1..+1 \"), Arg(Int32), Returns(Double) );\n\
";
LPCWSTR __stdcall _JMP_Declarations()
{
return g_Declarations;
}.DEF ファイル
; JMPSound.def : Declares the module parameters for the DLL.
LIBRARY "JMPSound"
EXPORTS
; Explicit exports can go here
_JMP_Declarations
上記の g_Declarations により、DLL を初期化する JSL は単純です。
dll = loaddll("C:\Documents and Settings\L\Desktop\JMPSound.dll");
dll<<INIT></INIT>「init()」は機能します。 そして、「feed()」も同様で、配列を渡します...
data = leftchan || rightchan || col1:*alternate || col2:*alternate || col3:*alternate || col4:*alternate;
dll << feed( data, 0 );
(DLL の目的は、Feed 関数を介してオーディオ サンプルを受け取り、それらを再生することでした...JMP が次のサンプル セットを計算している間に。 スレッド化はこの DLL に固有のものであり、スレッドを使用する必要はありません。)
JMP 対応の DLL については、Mark のリンクを参照してください。 ずっと前に作ったものです。 明確にするために、JMP 対応 DLL とその他すべての 2 種類があります。 JMP 対応の DLL には、使いやすくするための追加情報がいくつか含まれており、おそらく使用できないエントリ ポイントはありません。 複雑な構造を使用するエントリ ポイントや、JMP データ型に適切にマップされないポインタは、おそらく使用できません。
見つけられるか見てみます、どこに置いてもかなりほこりっぽいです...
これは、" の無意識の使用例です。マルチメディア DLL の PlaySound」封筒に入った音声メモ
@jschroedl
「ヘルプ > スクリプト インデックス」を実行して「DLL」を検索すると、作業を開始するためのいくつかの例が表示されます。
