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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.63694 の関連記事表示

<< 0 >>
■63694  C++/CLI Stopwatchについて
□投稿者/ abcYear -(2012/09/27(Thu) 22:48:37)

    分類:[C++/CLI] 

    お世話になります。
    今C++/CLIでdllを作成しようとしております。

    そのため下記リンク先を参考にまずはクラス化を行っていました。
    http://imagingsolution.blog107.fc2.com/blog-entry-263.html

    しかし起動時から時間を測る必要があるため、Stopwatchクラスを使おうとクラスのpublicに下記宣言をしたのですがエラーが発生しました。
    static Stopwatch watch;

    エラー内容:
    error C2146: 構文エラー : ';' が、識別子 'watch' の前に必要です。
    error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません

    グローバルの宣言だけでなく、関数のローカル変数と宣言をしても同じ内容が発生します。using namespaceを外すと問題なくなるのですが原因はいったいなんでしょうか?

    どれだけ調べてもわかりませんでしたので
    お力をお貸しください。よろしくお願いいたします。
親記事 /過去ログ107より / 関連記事表示
削除チェック/

■63698  Re[1]: C++/CLI Stopwatchについて
□投稿者/ Azulean -(2012/09/27(Thu) 23:58:42)
    よくわかりません。

    No63694 (abcYear さん) に返信
    > エラー内容:
    > error C2146: 構文エラー : ';' が、識別子 'watch' の前に必要です。
    > error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません

    Stopwatch が型として認識されていないのでしょう


    > using namespaceを外すと問題なくなるのですが原因はいったいなんでしょうか?

    これがよくわかりません。
    問題のコードはどの名前空間に対してどのような操作をしており、「using namespace を外す」とはどのような名前空間を外しているのでしょうか。

    ちなみに、Stopwatch クラスは System.Diagnostics 名前空間なのでそれを参照している必要がありますが。
    http://msdn.microsoft.com/ja-jp/library/system.diagnostics.stopwatch.aspx
記事No.63694 のレス /過去ログ107より / 関連記事表示
削除チェック/

■63702  Re[2]: C++/CLI Stopwatchについて
□投稿者/ 774RR -(2012/09/28(Fri) 12:57:52)
    質問文だけからではよくわからんけど
    void func1() {
      System::Diagnostics::Stopwatch sw;
    }
    は、俺のところではコンパイル通る (VS2005) ので、これすら通らないのであれば環境側の原因
    
    void func2() {
      static System::Diagnostics::Stopwatch sw;
    }
    としてしまうと、これは C3145 になる(仕様どおり)
    
    void func3() {
      Stopwatch sw;
    }
    と書きたいのであれば using namespace System::Diagnostics; は必須。
    グローバルスコープに書くか func3() { .. } のカッコ内に書くかは別問題。
記事No.63694 のレス /過去ログ107より / 関連記事表示
削除チェック/

■63706  Re[3]: C++/CLI Stopwatchについて
□投稿者/ abcYear -(2012/09/29(Sat) 13:32:17)
    お二方、ご回答をいただき誠にありがとうございます。
    また質問に対する説明不足大変申し訳ございません。

    まず環境設定について述べさせていただきます。
    構成の種類は「ダイナミックライブラリ(dll)」
    共通言語ランタイムサポートは「共通言語ランタイムサポート(/clr)」

    次にヘッダーファイル一部をお見せします。
    #pragma once
    using namespace System;
    using namespace System::IO;
    using namespace System::Text;
    using namespace System::Diagnostics;

    namespace aaa{
    ref class abc
    {
    private:
    static StreamWriter^ Writer;
    static Stopwatch watch;
    public:
    void Init(void);
    };
    }

    次にソースファイルですが
    void Init(void);の関数の中に下記を入力しています。

    Writer = gcnew StreamWriter(FilePath, false, System::Text::Encoding::Default);
    watch = gcnew Stopwatch();
    watch ->Start();

    このような書き方を行うとエラーが発生してしまうので
    確認のため関数の中で宣言もしてみようと試みましたがエラーが同様に発生しました。

    void Init(void);の中に下記を入力してもダメです。
    static Stopwatch watch = gcnew Stopwatch();

    環境設定に問題があるのか記述に問題があるのか
    原因がよくわかりません。
    この説明で分かればいいのですが、ご教授いただけますようよろしくお願いいたします。
記事No.63694 のレス /過去ログ107より / 関連記事表示
削除チェック/

■63707  Re[4]: C++/CLI Stopwatchについて
□投稿者/ オショウ -(2012/09/29(Sat) 16:26:33)
    2012/09/29(Sat) 16:27:15 編集(投稿者)

    > 構成の種類は「ダイナミックライブラリ(dll)」
    > 共通言語ランタイムサポートは「共通言語ランタイムサポート(/clr)」

      ええ〜と・・・
      プロジェクトを新規作成される時、VisualC++ の、CLR を選択したのちに
      クラスライブラリを選択して作成されましたか?

      それと、構成の種類は「ダイナミックライブラリ(dll)」と書かれてますが
      プロジェクトのテンプレートを自作追加していない限り、MFC DLL 以外に
      は、ダイナミックリンクライブラリと言う選択はありません。
      通常は、クラスライブラリですネ!

      尚且つ・・・
      ヘッダーファイルに
      static StreamWriter^ Writer;
      static Stopwatch watch;
      と宣言しても、.cpp側ではエラーしますヨ!
      .ccp側のクラスの中で宣言しないと・・・

      と言う簡単なミス?

    以上。参考まで
記事No.63694 のレス /過去ログ107より / 関連記事表示
削除チェック/

■63708  Re[5]: C++/CLI Stopwatchについて
□投稿者/ abcYear -(2012/09/30(Sun) 00:05:51)
    オショウ様
    ご回答ありがとうございます。


    改めて再度、プロジェクトを新規作成し、クラスライブラリを選択して作成しなおしました。
    その後問題なく、ビルドが通りました。なぜか原因がわかりませんが。。。

    また構成の種類を確認しましたが自動で「ダイナミックライブラリ(dll)」となっておりました。
    これはこういうもの??ソース内の一番上にも作成時に下記コメントがありましたし。
    //これは メイン DLL ファイルです。

    しかし皆様の迅速な回答のおかげで解決することができました。
    本当に感謝いたします。
記事No.63694 のレス / END /過去ログ107より / 関連記事表示
削除チェック/

■63709  Re[6]: C++/CLI Stopwatchについて
□投稿者/ Azulean -(2012/09/30(Sun) 08:09:35)
    No63708 (abcYear さん) に返信
    > 改めて再度、プロジェクトを新規作成し、クラスライブラリを選択して作成しなおしました。
    > その後問題なく、ビルドが通りました。なぜか原因がわかりませんが。。。

    参照設定をしていないからです。
    プロジェクトのプロパティ、共通プロパティ、Framework と参照で「System」を参照していなければエラーになります。
記事No.63694 のレス / END /過去ログ107より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -