下のソースを用いようと思ったのですが、C++で書かれているため、Cで使えるようにしたいです。
iostreamを消すと表示が真っ白になりますし、良く分かりません。
どこをどのように変えたら動くのでしょうか。
分かる方、よろしくお願いします。
http://wiki.livedoor.jp/mikk_ni3_92/d/OpenCV%a4% …
No.4ベストアンサー
- 回答日時:
お疲れ様です。
まず断っておきますが、私にはOpenCVの環境がないため確認出来ていません。
推測で答えますので、よろしくお願い致します。
まず、C言語にはbool型が標準では無いようです。
(参照URLを参考にして下さい。)
よって、自作でbool型を作るなどして下さい。
(以下は例)
#define bool char
#define false (0)
#define true(!0)
その次に、C++では引数の省略は暗黙的にvoidですが、C言語では引数が何も無い時はvoidを指定しなければいけません。
よって、「display」関数はプロトタイプ宣言および実体の引数宣言にvoidを指定する必要があります。
これでも駄目な時は、またお知らせ下さい。
以上 よろしくお願い致します。
参考URL:http://seclan.dll.jp/c99d/c99d05.htm
この回答への補足
ご回答ありがとうございます。
#define true(!0)
の!0がエラーになったため#defineで別に!0を定義したところ、正しい動作を確認できました。
ありがとうございます。
次の警告が出たのですが
.c(60) : warning C4113: 'void (__cdecl *)()' はパラメータ リストが 'void (__cdecl *)(void)' と異なります。
これを直す方法はありますか。(きちんと動くので無視しても良いのかもしれませんが)
お時間が宜しければ、教えていただけませんか。
No.5
- 回答日時:
>> 次の警告が出たのですが
>> .c(60) : warning C4113: 'void (__cdecl *)()' はパラメータ
>> リストが 'void (__cdecl *)(void)' と異なります。
>> これを直す方法はありますか。(きちんと動くので無視しても
>> 良いのかもしれませんが)
前にも記載していますが、宣言文を変更すれば良いかと。
void display();
↓
void display(void)
関数の実体も同じように修正
以上 よろしくお願い致します。
ご回答ありがとうございます。
確かに警告がなくなりました。
解決できました。
説明不足等でご迷惑をお掛けしたと思いますが、何度もありがとうございました。
No.4のご回答を良回答とさせていただきます。
ありがとうございました。
No.3
- 回答日時:
お疲れ様です。
失礼ですが貴方の文章からは、どこまでがうまくいって、どこからがうまくいかないのか判断に苦しみます。
結局、テクスチャに画像は貼り付けられたのでしょうか?
前にも記載しましたが、参照先のURLのソースコードを見る限りは、「iostream」と「std::cerr」以外はC++でないとコンパイルされないコードは無いように見えます。
Cでコンパイルした場合に、どんなエラーになるのでしょうか?
この回答への補足
ご回答ありがとうございます。
説明不足で申し訳ありませんでした。
C++では画像を貼れましたが、Cでは出来ていません。
Cでiostreamとstd::cerrをコメントアウトして実行した場合、次のエラーがでます。
.c(17) : error C2061: 構文エラー : 識別子 'LoadGLTextures'
.c(17) : error C2059: 構文エラー : ';'
.c(17) : error C2059: 構文エラー : ')'
.c(53) : warning C4113: 'void (__cdecl *)()' はパラメータ リストが 'void (__cdecl *)(void)' と異なります。
.c(61) : warning C4013: 関数 'LoadGLTextures' は定義されていません。int 型の値を返す外部関数と見なします。
.c(61) : error C2065: 'false' : 定義されていない識別子です。
何度もすみませんが、よろしくお願いします。
No.2
- 回答日時:
そもそも、「コンパイルエラーが出るからC++からCに変えたい」というのが間違いなような気がします。
参照先のURLでcstdioやcstdlibを使用している箇所はありませんでした。
もう少し詳細なエラー内容の提示をお願いします。(どのソースのどの行など)
そもそも、"test.jpg"は実行ファイルと同じフォルダに置いてあるのでしょうか?
また、"test.jpg"が真っ白な画像である可能性はないでしょうか?
以上 よろしくお願い致します。
この回答への補足
ご回答ありがとうございます。
>「コンパイルエラーが出るからC++からCに変えたい」
わけではなく、Cで組んでいるプログラムに組み込みたいため変換にしたいのです。
>もう少し詳細なエラー内容の提示をお願いします。
申し訳ありません。初歩的なミスで、現在C++での動作を確認しました。やはり、読み込んだ画像が回転している四角形に貼り付けられる内容でした。
前述のように、Cに組み込みたいのですが、どこをどう変えたら良いのでしょうか。
ご回答よろしくお願いします。
No.1
- 回答日時:
お疲れ様です。
OpenCVが手元に無いため分かりませんが、パッと見た限りC++に依存したコードは「std::cerr」しかありませんでした。
そもそも、リンク先のホームページのソースコードを実行するとどんな画面が表示されて、それがどう表示されないのか記載されるべきだと思うのですが。。。
その前に、OSやコンパイラが分かりませんし。。。
この回答への補足
ご指摘ありがとうございます。
OSはXPでVisual C++ 2008 Express Editionを使用しています。
ソースを実行しようとするとcstdioとcstdlib(iostreamで使用?)で
構文エラー : '{' が ':' の前にありません。
構文エラー : ':'
となり(原因不明)、結果は確かめられていませんが読む限りでは
「読み込んだ画像をテクスチャとして、(回転している)四角形に貼り付けている」はずです。
エラー元と思われるiostreamを消して実行すると、画像が貼り付けられることなく、白いままの四角形が回転している状態です。
宜しければ、ご回答お願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCEL 行内のデータを2行に分けて、表を作り直したいのです。教えてください。 5 2023/06/25 14:00
- その他(プログラミング・Web制作) 変換のプログラムを教えてください。 6 2023/07/01 09:57
- Excel(エクセル) Excel関数の質問です。 5 2022/04/23 12:53
- Excel(エクセル) WORKDAY関数 4 2023/06/08 13:23
- Excel(エクセル) Googleスプレッドシートで、あるセルの値に応じて行を自動挿入したい 急いでいます! くわしい方、 3 2023/03/06 19:05
- C言語・C++・C# アセンブラ指令 3 2023/06/17 14:47
- Excel(エクセル) この関数の誤りを教えて下さい。 3 2023/08/08 07:36
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- Excel(エクセル) Excel セルに入っている日付を参照して、別シートのリストを表示させたい 1 2022/04/12 17:02
- C言語・C++・C# C++のcinの動作 5 2023/02/26 00:13
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Arduinoでの圧電スピーカーとタ...
-
C# Controls.Addで動的に配置し...
-
unityの教科書のゲームを作って...
-
C#でトーンカーブの作成
-
int main()、void main()、void...
-
C++でイベントドリブンなコード...
-
【gcc・cygwin】multiple defin...
-
Notepad++の関数リスト表示の変...
-
C# KeyDownイベントでショート...
-
critical error c0000005
-
静的でないメンバ関数の呼び出...
-
ArduinoでMouse関数を使用して...
-
既定のコンストラクタがありま...
-
見た目は同じソースなのにエラ...
-
stddef.hって何?
-
TimerProc コールバック関数を...
-
const_castのつかいどころを教...
-
コールバックって・・・
-
C++にてtemplateで受け取った任...
-
DLLの関数呼び出しで引数がある...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
既定のコンストラクタがありま...
-
【gcc・cygwin】multiple defin...
-
Notepad++の関数リスト表示の変...
-
戻り値を返す関数の前に(void)...
-
ArduinoでMouse関数を使用して...
-
C++にてtemplateで受け取った任...
-
int main()、void main()、void...
-
多重定義が起きている?--lnk20...
-
C# KeyDownイベントでショート...
-
静的でないメンバ関数の呼び出...
-
VC++でGetKeyboardStateがうま...
-
C# Controls.Addで動的に配置し...
-
gcc: incompatible pointer type
-
void*型の配列について
-
const_castのつかいどころを教...
-
C言語 ① 5秒間 1秒間隔で点滅を...
-
(void)0 はどんな意味ですか
-
TimerProc コールバック関数を...
-
DLLの関数呼び出しで引数がある...
-
H8マイコンのシリアル通信につ...
おすすめ情報