に投稿

自作プラグインを配布したら「Couldn’t find main entry point for」エラーが出て動かせない現象が多発した話

【結論】

「プロパティ」>「構成プロパティ」>「C/C++」>「コード生成」>「ランタイムライブラリ」の設定を /MTd にしてビルドすればOK。

【ランタイムライブラリとは】

プログラムを実行するときに必要な部品。今回は Microsoft Visual C++ 再頒布可能パッケージが必要だったっぽい。

【/MTd と /MDd の違い】

/MT(d):
メリット:VC用のランタイムライブラリを静的リンクしているので、VC用の再配布可能ランタイムがインストールされていないPC環境でも動作する。
デメリット: バイナリサイズが大きくなる。

/MD(d):
メリット: VC用のランタイムライブラリを動的リンクしているので、VC用の再配布可能ランタイムがインストールされている環境であれば/MD(d)コンパイルされたプログラムがこれを共用できるので、プログラムサイズが小さくできる。
デメリット: VC用のランタイムライブラリの事前インストールを行わないと動作しない。VCのバージョンごとに別のランタイムライブラリが必要。

要するに /MTd は必要なコードを全部かき集めて一つにしてくれるってことね。C++はこういうコーディングと関係ないところで躓くのが本当に多くてつらい。そういえば夏休みの間に新しいプラグインを開発するのが目標だったけどダメそう。。。orz