■103718 / ) |
Re[3]: ActiveXをWinFormsで表示するとATL14.00 |
□投稿者/ とっちゃん (848回)-(2025/06/02(Mon) 21:34:49)
|
■No103717 (シナモ さん) に返信
> ビルドが通っただけでC++側の問題か、クライアント側の初期化の問題か、を疑っているところです。 > VS のバージョンが 17.9.1 なのでもしかしたらVS側の問題かもしれません。 まずは、サポートされているバージョン(VS2022は、細かいレベルで古いマイナーバージョンはサポート終了しています)に アップデートすることをお勧めします。
そのうえで改めて貼り付けできるかを調べてみるとよいのではないかと。
ビルドが通っただけで…という可能性ももちろんあります。 ビルドしたCOMオブジェクトが間接的にほかのCOMオブジェクトを必要としている場合 それも登録されていないと動きません。 また、何かしらのNativeDLLが必要であれば、それらも必要になります。
アップグレードあるあるなネタ的には、COM(に限らずNativeDLLは全部同様)が参照している 別のDLLが、古いランタイムを必要としていてそれがインストールされていなかった なんてことは本当によくあります。
もちろん、コンバートしてビルドは通るけど、実行すると内部エラーでこけている なんてこともよくある現象の一つです。
> ILSpyで確認すると、SetAboutBoxDelegate(ShowAboutBox);を実行していました。 > aximpコマンドによるラップ時に生成されるコードと思いますが、ATL14.00と表示するのはこれのようです。
こちらはすでに指摘がありますが、aximp のラップコードの問題ではなく 貼り付けたオブジェクトが正しく初期化できていないため 結果として「ATL14.00」というテキストを表示する機能が呼ばれてしまっているということだと思います。 (デザイナー上だと初期化が不十分なため、そうなってしまう可能性もある)
|
|