VS200X/MSVCで正常にコンパイルされるVSTプラグインがあります。その環境を好むユーザーのためにも、Codeblocks/MinGWプロジェクトを作成しようとしています。
コードブロックを使用してdllをビルドすると、リソース(.pngファイル)を含めようとするまで、GUIを使用してVSTホストで機能します。
codeblocksプロジェクトに.rcファイルを含めます。resource.hのリソースパスにスペースがありません。
ビルドされた.dllファイルをコピーしようとすると、OSによってロックされます。windresがリソースを正常にコンパイルしておらず、ファイルのハンドルを保持しているように見えますが、.dllのサイズからすると、リソースはそこにあるように見えます。GDBを介してvstホストでdllを実行しようとすると、ブレークポイントにヒットしません...おそらくホストは.dllをロードできません。
これがコードブロックのcbpコンパイラ設定です...
<Target title="Release Win32">
<Option output="build-win-cb\IPlugEffect" prefix_auto="1" extension_auto="1" />
<Option working_dir="build-win-cb\" />
<Option object_output="build-win-cb\Release" />
<Option type="3" />
<Option compiler="gcc" />
<Option parameters="IPlugEffect.dll" />
<Option host_application="C:\Program Files\vsthost\vsthost.exe" />
<Compiler>
<Add option="-O3" />
<Add option="-msse2" />
<Add option="-ffast-math" />
<Add option="-DVST_API" />
<Add option="-DWIN32" />
<Add option="-D_WIN32_WINNT=0x0501" />
<Add option="-DWINVER=0x0501" />
<Add option="-D_CRT_SECURE_NO_DEPRECATE" />
<Add option="-DPNG_NO_ASSEMBLER_CODE" />
<Add option="-DPNG_LIBPNG_SPECIALBUILD" />
<Add option="-DDLL_BUILD" />
</Compiler>
</Target>
resource.h
...
// Unique IDs for each image resource.
#define KNOB_ID 101
// Image resource locations for this plug.
...
IPlugEffect.rc
#include "resource.h"
KNOB_ID PNG KNOB_FN
#define KNOB_FN "resources/img/knob.png"