C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■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」というテキストを表示する機能が呼ばれてしまっているということだと思います。
(デザイナー上だと初期化が不十分なため、そうなってしまう可能性もある)


返信 編集キー/


管理者用

- Child Tree -