メタセコイアのプラグインを自作しようとSDKを弄り中。
私が作ろうとしてるプラグインはパラメータ画面が複雑なため、Win32+WTLではなく
クラスライブラリが充実してる.NETで作りたいところ。
そこでプラグインDLLはC++/CLIで作って画面はC#で作って呼び出すことにしました。
メタセコSDKのサンプルを
マネージ混在モードに切り替えてビルドしてみました。
ビルドは成功し、出来上がったDLLをメタセコへインストール・・・としてたところで見事にフリーズ、「DllMainでマネージドコードは呼んじゃだめよ」というエラーが発生しました。
調べてみるとDllMain関数をネイティブコードで生成していなかったのが原因でした。
#pragma unmanagedでネイティブコードを指定してやれば無事メタセコからロードできました。
#pragma unmanaged
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
#pragma managed
0 件のコメント:
コメントを投稿