FC2ブログ
ビルドが通るのにタイプエラー!? ~eclipse編~

man-67335_640

 こんにちは!最近eclipseで開発を行うことが多いです。先日もeclipseでC++のプログラム開発をしていて、ヘッダファイルが足りない事に気づいてインクルードしました。そして書きかけのコードを書き始めると、必要なヘッダファイルをインクルードしたはずなのに、

「型が定義されてません。」

というような意味合いのエラーが出てきて困ってしまいました。きちんと必要なヘッダはインクルードしているし、何がいけないんだろう?プロジェクトをクリーンしてからビルドしなおしても上手くいかないし困っていました...。

解決方法

 いろいろ調べてみて、以下のページを見つけました。

Eclipse c++ Type could not be resolved error even though build is successful  ~stackoverflow~

上のページによると、このエラーはeclilpseのインデクサーによって引き起こされる問題のようです。インデクサーとはeclipseがコード補完等を行うために補完候補を自動的に追加してくれるものです。これがヘッダファイルの変更に追いついていないために起こるエラーのようです。解決方法は以下の手順です。

  1. プロジェクトを右クリックする。
  2. その中からIndex->Rebuildを選択する。この時Rebuildの進捗状況はeclipseの右下辺りに出ると思います。
  3. 続いて先ほどの手順と同様にプロジェクトを右クリックし、Index->Freshen All Files を選択する。進捗状況はeclipse右下に出ると思います。

 これできちんとコードを保存しなおしてプロジェクトをビルドしてやれば、エラーが消えました!同じ症状でお困りの方がいましたら、是非試してみてください!

スポンサーサイト



テーマ:プログラミング - ジャンル:コンピュータ

[2014/08/02 10:49] | プログラミング全般 | トラックバック(0) | コメント(2) | page top
bash スクリプト if構文エラー!

stock-photo-30703778-mistake-concepts-with-oops-message-on-keyboard こんにちは!シェルスクリプトって便利だなと思う今日このごろです。普段何気なく書いているシェルスクリプト(bash)ですが、最近bashスクリプトのif構文で気づきにくいエラーに遭遇したので、メモがてらここに書いておこうと思います。

エラーメッセージ

 件のエラーメッセージがどんなものだったかを以下に示します。


1: line 14: syntax error near unexpected token `then'

 本来なら行番号の前にプログラム名とか出ていますが、本質的ではないのでここでは省略しています。どんな風にif構文を書いていたかをいかに示します。


1: if[ 条件式 ]; then

2: 何らかの処理

3: fi

 一体このスクリプトのどこがいけないのか、エラーメッセージが示しているようにthenの近くの文は間違っていないしどうなんだろとしばらく悩んでいました。

原因

 しばらく悩んで間違いに気づきました!どこが間違っていたかというと、前章のif構文の、ifと"["の間に半角スペースがありませんでした!この2つをくっつけてしまうと、bashはifコマンドを正しく認識出来ないようです。多くのプログラミング言語ではifの後にすぐ条件式の括弧をつけるのでついついやりがちかと思います。一度ハマるとなかなか気づかないタイプのミスかと思うので、今後は気をつけようと思います!

テーマ:プログラミング - ジャンル:コンピュータ

[2014/08/01 21:40] | プログラミング全般 | トラックバック(0) | コメント(0) | page top
値渡しと参照渡し ~2つの大きな違い~

 こんにちは!最近画像処理関係のプログラムを書くことが多い管理人です。とあるプログラムの内部の関数に双線型補間を実装しなければならず、その時にタイトルのところを間違えていたせいで実行時間に大きな差が出てしまっていたので、今回はそれについて紹介しようと思います。

前提知識

 今回は双線型補間を行う関数の実装時に出会ったトラブルということで、それらについて興味がある人のために、参考になるURLをここに貼っておこうと思います。

詠み人知らずの備忘録 ~回転した画像をバイリニア補間する~

詠み人知らずの備忘録 ~画像を回転させる際の画素を補間するコード~

 また、値渡しと参照渡しとは何かについて詳細を知りたい方は以下のページが参考になると思います。

Rubyist Magazine ~値渡しと参照渡しの違いを理解する~

どこで困ったか

 では本章で、私が値渡しと参照渡しを間違えていたせいで、どのように困ったかを書いていこうと思います。
 最初は前章にリンクを貼ったページの中にあるバイリニア補間 (双線形補間) のコードを自分の開発しているソフトウェアに合わせて関数で実装しようとしました。その時に、その関数の引数として画像の配列を渡すようにしていました。いざそのコードを実行してみると、1枚の画像に、自分の行いたい処理をかけるだけで、1分程度かかってしまいます^^;
 どこが処理のネックになっているか調べたところ、どうもバイリニア補間を行う関数が処理時間を食っているようでした。引数として渡している画像は512x512程度の大きさで大したサイズではないし、双線形補間として行っている計算も大したこと無いのになぜだろうと思っていました。

原因と解決策

 原因は、引数として渡す画像配列を、参照ではなく値として渡していたためでした。参照ではなく値として渡してしまうと、引数を渡すたびに引数のコピーをまるごと作らねばならず、引数がある程度の大きさのものだと、処理に時間がかかってしまいます。今まで値渡しと参照渡しの違いはわかっていたのですが、処理速度の違いとして問題を感じたことはありませんでした。この部分を改善することで1分程度かかっていた処理が1秒もかからず終わるようになりました笑 今度からは気をつけようと思います!

テーマ:プログラミング - ジャンル:コンピュータ

[2014/07/26 21:12] | プログラミング全般 | トラックバック(0) | コメント(0) | page top
Vimのコメントが見えない!

こんにちは!今までVisual StudioなどのIDEでC言語の開発を行っていましたが、せっかくなのでvimをエディターにしてgccなどのコンパイラでコンパイルするという環境で開発をしようと思い、vimなどの環境を整えました。しかしここで問題が。syntax on を.vimrcに書いただけのシンタックスハイライトの設定では、コメントが青色になって、背景が黒のコンソール上では非常に読みづらいです!以下にこの設定方法についてまとめます。

色のエイリアスの確認

これから色の設定を変えていくわけですが、その前にどのような色のエイリアス(割り当て)がvimで行われているのか確認しなければなりません。そのために、vimのコマンドモードで以下のコマンドを実行してください。

  1: :so $VIMRUNTIME/syntax/colortest.vim

このコマンドを実行すると以下の画像のような画面が出てきます。(クリックして拡大。)

vim_color1122

この画像に書いてある色の名前が、この後設定する色の名前として使用できます。

コメントの色の変更

では実際にコメントの色を変更しましょう!そのためには.vimrcに以下のコマンドを追加してください。

  1: hi Comment ctermfg=colorName
colorNameは皆さんがコメントの色として使いたい色の名前を設定してください。クォーテーション等で囲む必要はありません。ここまで出来たら一度VIMを閉じて再度VIMを起動すると、色の変更が反映されます!ctermfgに整数を指定して色を設定するやり方もあるようですが、色の名前で設定するほうがわかりやすいと思ったのでご紹介しました。参考までに!

テーマ:プログラミング - ジャンル:コンピュータ

[2014/05/29 17:50] | プログラミング全般 | トラックバック(0) | コメント(0) | page top
cygwin1.dll cygblas-0.dll が見つからない!

こんにちは!cygwin上でコンパイルしたプログラムを動作させたときに、タイトルのようにcygwin1.dllとcygblas-0.dllが見つからないというエラーが出ました。この記事にその解決方法をまとめておきます。

cygwin1.dllについて

まずcygwin1.dllについて解決しましょう。これはcygwinをインストールしている時点で入っているはずなので、以下のパスを環境変数Pathに追加してください。

C:\cygwin64\bin

このパスはご自身がcygwinをインストールしたディレクトリに適宜読み替えてください。

cygblas-0.dllについて

まずliblapack0がcygwinにインストールされているかを確認してください。インストールされているかどうかはsetup.exeなどで確認できると思います。インストールしたら以下のパスを環境変数Pathに追加してください。

C:\cygwin64\lib\lapack

こちらも先ほどと同様にcygwinをインストールしたディレクトリに適宜読み替えてください。

まとめ

以上で問題が解決しました!パスの通し方がわからない方は以前の記事を参考にしてみてください!

テーマ:トラブル - ジャンル:コンピュータ

[2014/05/28 19:25] | プログラミング全般 | トラックバック(0) | コメント(0) | page top
| ホーム | 次のページ>>