none
VisualStudio2017 VC++ でComponentOne Stuido ActiveXを使用したところ、COCXでビルドエラー RRS feed

  • 質問

  • いつもお世話になっております。arubi-momoと申します。

    開発環境は下記の通りとなっています。

    Windows10、VisualStudio2017 ver15.9.6、VC++、ComponentOne Studio ActiveX vxFlexGrid 8.0(Light)

    VS2017 のVC++のダイアログベースプロジェクトを作成し、画面にvsFlexGrid(Light)のコンポーネントを乗っけました。

    コンポーネント上で右クリック→コントロール変数の追加を選択し、グリッドにm_Gridという名前を付けて、OKボタンを押下しました。

    そのままビルドを行ったところ、「識別子COCXがありません」という旨のエラーが発生しました。ヘッダファイルのエラー部分は下記の通りです。

    COCX m_Grid; // Gridの変数宣言部分でエラー

    COCXはコントロール変数の追加をしたときに自動で設定されるコンポーネントの型です。ヘルプを確認したところ、ヘルプ上では「CvsFlexGrid」という型で宣言されていました。なので、一応、下記の通り変更してみました。

    CvsFlexGrid m_Grid; // Gridの変数宣言部分でエラー

    が、やはり同じエラーとなりました。

    ネット上でも色々と調べてみたところ、英語の情報しかなくて、つたない英語力で訳した結果、どうやらVisualStudioのバージョンによって発生したりしなかったりする事象と読み取りました。一度VS側で改修が入り、解決された問題だったが、VisualStudio2017 ver15.8以降からまた発生しているようです。ver15.6では発生しないとの情報もありました、つまりデグレしている。。。?

    こちらで使用しているバージョンは15.9ですが、同じ現象が発生しています。

    これはVisualStudioの不具合で発生している事象なのでしょうか。回避方法はありませんでしょうか。
    ご存じの方がいらっしゃいましたら、ご教示いただきたく投稿させていただきました。

    よろしくお願いいたします。

    2020年4月9日 5:56

回答

  • Developer Community のアイテムとしては、これが相当しそうです ね。
    (ActiveX コントロールを作る側の Add なんたら…というアイテムがノイジーですが…。ほかに進展がないもので これもそうかな?

    いくつかアイテムを流し読みした感じだと、未解決のまま VS2019 に開発が移ったので「VS2017 では解決策なし」、「VS2019 でも未解決の可能性あり」といったところでしょうか?

    近年、Visual C++ で ActiveX コントロールを使って GUI を作るシナリオはかなり少なくなってきているので、修正優先度が上がらないのかな…?
    VS2017/VS2019 で不具合が出続けるとなると、古い IDE を使うしか回避策はないかもしれません。

    • 回答としてマーク arubi_momo 2020年4月16日 5:10
    2020年4月9日 12:59
    モデレータ

すべての返信

  • 誰も答えられないでしょう。

    なぜなら、「vxFlexGrid」「COCX」「CvsFlexGrid」の何れについてもWeb上に情報が見つかりません。
    つまり、存在しないものについての質問になってしまっているわけですね。

    (1)手打ち入力せずにコピーペーストを使用しましょう。
    (2)自身で説明する努力よりも、発生したエラーメッセージのコピペの方が良質な情報となります。

    上記に注意して質問を修正してみてはどうでしょう。
    2020年4月9日 8:07
  • Developer Community のアイテムとしては、これが相当しそうです ね。
    (ActiveX コントロールを作る側の Add なんたら…というアイテムがノイジーですが…。ほかに進展がないもので これもそうかな?

    いくつかアイテムを流し読みした感じだと、未解決のまま VS2019 に開発が移ったので「VS2017 では解決策なし」、「VS2019 でも未解決の可能性あり」といったところでしょうか?

    近年、Visual C++ で ActiveX コントロールを使って GUI を作るシナリオはかなり少なくなってきているので、修正優先度が上がらないのかな…?
    VS2017/VS2019 で不具合が出続けるとなると、古い IDE を使うしか回避策はないかもしれません。

    • 回答としてマーク arubi_momo 2020年4月16日 5:10
    2020年4月9日 12:59
    モデレータ
  • すみません。完全スタンドアローンでの開発のため、ネットにつながるPCを横に置いて直打ちで入力していたため、打ち間違いがあったようです。

    vxFlexGrid → VSFlexGrid

    CvsFlexGrid → CVSFlexGrid 

    COCXはそのままで合っていました。

    エラーメッセージは、COCX m_Gridの宣言の所で、下記の通り出ています。

    E0020:識別子"COCX"が定義されていません。
    C4430:型指定子がありません - intと仮定しました。メモ:C++はintを規定値としてサポートしていません

    ヘルプファイルの使用例を確認すると、本来、ラッパークラスは「CVSFlexGrid」として生成されるようですが、自動で「COCX」と設定されてしまいます。そしてそのままビルドすると上記のエラーが発生します。

    ご指摘の通り、Web上に情報が少なく、VisualStudioのバージョンによって発生するということしかわかっていません。解決しているという情報も見当たらず、困っております。もしお心当たりある方がいらっしゃいましたら、ご教示お願いいたします。

    2020年4月10日 4:37
  • Azuleanさま

    ご回答ありがとうございます。

    1つ目のリンクは確認していたのですが、英語力がなさすぎて少し誤解して解釈していたかもしれません。
    未解決のままVS2019に移っていたのですかね。。。

    こちらのサイトでも同じような事象が報告されていたのですが、回答はありませんでした。
    ただ、こちらのサイトの情報で、どうやらVS2017 でもver15.6の時は生成できていたこと、15.8から生成できなくなっていたことから、デグレしたのかな。。。と思っていました。

    かなり致命的な不具合だと思うのに、優先度上がらないんですかね。。。ActiveXを使用するのが間違いなんでしょうかね。。。

    やはり古いIDEを使用するしかないのでしょうか。
    もう少し調べてみて、回避策がなければその方向で相談してみようと思います。

    ありがとうございました。

    2020年4月10日 4:52
  • arubi_momoさん、こんにちは。フォーラムオペレーターのクモです。
    MSDNフォーラムにご投稿くださいましてありがとうございます。

    ComponentOne Studio ActiveX vxFlexGrid 8.0はサードパーティのライブラリに関しているので、サポートしていません。
    お手数ですが、ComponentOneに関するフォーラムにご投稿いただくことをご検討ください。

    どうぞよろしくお願いいたします。 

    MSDN/ TechNet Community Support Kumo ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、 ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~

    2020年4月14日 2:39
    モデレータ
  • 皆様、ご回答ありがとうございました。
    やはりどうも回避策がないようだったので、依頼元と相談しようと思います。

    皆様、今後ともどうぞよろしくお願いいたします。

    2020年4月16日 5:10