ママのスキンケアのお悩みにおすすめアイテム

OpenGLをコンパイルしようとしてCygwinで
「gcc -o sample (プログラムの名前).c
-I/usr/local/include -lglut32 -lglu32 -lopengl32」
と入力すると
「In file included from /usr/include/GL/glut.h:132,
from (プログラムの名前).c:1:
/usr/include/w32api/GL/glu.h:230: error ハクヒ。・ィ・鬘シ before '*' taken」
と表示されてコンパイルできません。「ハクヒ。・ィ・鬘シ」の部分は文字化けだと思います。このエラーメッセージから何が問題か分かる方がいらっしゃいましたら回答していただけると嬉しいです。CygwinはNetinstallからすべてのものをインストールしたので足りないものはないと思います。よろしくお願いします。

A 回答 (4件)

> GLAPI const wchar_t * APIENTRY gluErrorUnicodeStringEXT (GLenum error);



において「wchar_t 型が定義されていない」という
既知の問題のようです。

http://www.cygwin.com/ml/cygwin/2004-02/msg00990 …

僕の環境ではコンパイルできたので、「あれれ」と
思っていたら、/include/w32api/GL/glu.h に
gluErrorUnicodeStringEXT という関数の定義が
ありませんでした。
僕の環境も古いのかな?

---
とりあえず解決策としては

#include<GL/glut.h>
#include<stdio.h>
#include<math.h>



#include<stdio.h>
#include<math.h>
#include<windows.h>
#include<GL/glut.h>

にしてみて下さい。

それでも駄目な場合は

# ifndef _WCHAR_T_DEFINED
typedef unsigned short wchar_t;
# define _WCHAR_T_DEFINED
# endif


/include/w32api/GL/glu.h
のトップに書き加えてください。

参考URL:http://www.cygwin.com/ml/cygwin/2004-02/msg00990 …
    • good
    • 0
この回答へのお礼

おかげ様でちゃんとコンパイル・実行できました!ありがとうございます!!ここ数日間ずっと試行錯誤していたのですが全然ダメで、解決策を知っている友達もいなくて困っていたので、解決できて本当に嬉しいです。ありがとうございましたm(__)m
それで、「一難去ってまた一難」とはよく言ったもので、実はやっているとまた新たに問題が発生しました。友達も同じ症状で悩んでいます。もしお時間がありましたらそちらも見てくださればと思います。では。

お礼日時:2004/07/17 09:11

# cygnus ・・・って大部古い環境じゃないですか?



もしかしてお手伝いできるかもしれないので
コンパイルしようとしているプログラムを
提示してもらえますか?

今手持ちの cygwin 環境で
http://www.opengl.org/resources/code/basics/samp …
のサンプルコードをコンパイル実行できましたので
~>gcc -o teapot.exe teapot.c -lglut32 -lglu32 -lopengl32

あと、/usr/include/w32api/GL/glu.h
の230 行目に明らかに変なことがあったりしません?

参考URL:http://www.opengl.org/resources/code/basics/samp …

この回答への補足

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

教えてくださったサンプルコードをダウンロードしてコンパイル・実行してみましたところ、どちらも正常にでき、ちゃんと立体のティーポットが出てきました。

コンパイルしようとしてできなかったプログラムを以下に書いておきます。学校の授業でやったことを自宅でも復習しようと思って作った簡単なサインカーブと円を描かせるプログラムです。

#include<GL/glut.h>
#include<stdio.h>
#include<math.h>
void display(void){

int i;
double a=0.9;//倍率の指定(0.0~1.0で指定)

//ウィンドウを塗りつぶす
glClear(GL_COLOR_BUFFER_BIT);
//描画の色を指定
glColor3d(1.0,0.0,0.0);

//直線の描画
glBegin(GL_LINES);//直線の描画開始
glVertex2d(-1.0*a,0.0);
glVertex2d(1.0*a,0.0);
glEnd();//直線の描画終了

//サイン曲線の描画
glBegin(GL_LINE_STRIP);//折れ線の描画開始
for(i=0;i<360;i++){
glVertex2d(a*(i*2/360.0-1.0), a*sin(3.14*i/180));//aは倍率
}
glEnd();//折れ線の描画終了

//円の描画
glBegin(GL_LINE_STRIP);//折れ線の描画開始
for(i=0;i<360;i++){
glVertex2d(a*cos(3.14*i/180), a*sin(3.14*i/180));//aは倍率
}
glEnd();//折れ線の描画終了

glFlush();

}
void init(void){
//背景の指定
glClearColor(1.0,1.0,1.0,0.0);
}

int main(int argc, char *argv[]){

glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA);
glutCreateWindow(argv[0]);
glutDisplayFunc(display);
init();
glutMainLoop();
return 0;

}

こんな感じですσ(^^;)コメントアウトしている言葉は自分が後から見て分かりやすいようにと書いていたものなので気にしないで下さい。

また、/usr/include/w32api/GL/glu.hには230行目には以下のようなことが書かれていました。

GLAPI const wchar_t * APIENTRY gluErrorUnicodeStringEXT (GLenum error);

もし、これで何か分かるようなことがありましたら教えて下さい。よろしくお願いします。

補足日時:2004/07/16 02:03
    • good
    • 0

Cygwinのインストール方法自体が間違っているのではないでしょうか?



正常にインストールされていたらcygnusディレクトリがあるはずです。

参考URL:http://www.alles.or.jp/~torutk/oojava/meadow/cyg …

この回答への補足

cygwinのホームページへ行って何度もset.upをダウンロード・実行しましたが、インストールはコンプリートしているのにやはりcygnusはインストールされていませんでした。いろいろ調べてみましたが、もともとsetup.exeの中にはcygnusがインストールされるようなものは含まれていないような気がするのですがどうなんでしょうか。もし間違えていたらすみません。

補足日時:2004/07/16 01:55
    • good
    • 0

参考URL参照してみて下さい。


それでもだめでしょうか?

参考URL:http://pitecan.com/info/winglut.html

この回答への補足

参考URLにあるcygnusの場所が分かりません。検索でcygnusと名のつくファイルを探しましたが見つかりませんでした。すみません、初心者なもので…。もし宜しければ教えて下さい。

補足日時:2004/07/14 22:44
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QcygwinでOpenGLのコンパイルができない

cygwinでOpenGLのコンパイルをしようとしているのですが出来ません。
gcc -o3 -lglut32 -lglu32 -lopengl32 sample.c と入力すると
/usr/lib/gcc/x86_64-pc-cygwin/4.8.1/../../../../x86_64-pc-cygwin/bin/ld: -lglut32 が見つかりません
collect2: エラー: ld はステータス 1 で終了しました
と表示されます。
cygwinのパッケージはすべてインストールしたので足りないものはないと思います。
何が問題なのでしょう。
ご存知の方は回答をよろしくお願致します。

Aベストアンサー

回答No.4 の者です。すみません。訂正させて下さい。

(訂正) -glut -lGL ではなく -lglut -lGLU -lGL を指定して下さい

改めて確認した所、てもとの cygwin には GLU を入れていませんでした(汗)。GLU を入れて再度確認した所、/usr/lib/libGLU.dll.a ができたので、GLU も利用するのであれば -lGLU を指定して下さい。

また、

> 何が問題なのでしょう。

との事ですが、エラーメッセージに出ている通り「-lglut32 が見付からない」というのが問題点です。"-l某" というのは「"lib某.a" というライブラリファイルとリンクする」という意味なので、エラーメッセージは "lib某.a" というファイルが既定の場所に見付からなかったという事と解釈できます。

システムのパッケージで入れたライブラリの場合、大抵 /usr/lib/ の中に "lib某.a" は配置されますので、先ずはそこにファイルがあるか確認するのが解決の第一段階になる訳です。もしファイルがなければ、ファイル名が微妙に異なっているか、ライブラリが入っていないかという事になります。今回の場合は /usr/lib/ に libglut.a などのファイルがあったので、これらを試して見てコンパイルできる事を確認した訳です。

因みに、-lglut -lGLU -lGL の順番は、 GLU/GLU/OpenGL のそれぞれの依存関係によって決まっているので、指定する順番には気を付ける必要があります。

回答No.4 の者です。すみません。訂正させて下さい。

(訂正) -glut -lGL ではなく -lglut -lGLU -lGL を指定して下さい

改めて確認した所、てもとの cygwin には GLU を入れていませんでした(汗)。GLU を入れて再度確認した所、/usr/lib/libGLU.dll.a ができたので、GLU も利用するのであれば -lGLU を指定して下さい。

また、

> 何が問題なのでしょう。

との事ですが、エラーメッセージに出ている通り「-lglut32 が見付からない」というのが問題点です。"-l某" というのは「"lib某.a" というライブラリファ...続きを読む

Qapt-get install ****** でinstallしたものをuninstallするには?

御世話になります。
vncserverだけをinstallするつもりが
誤って
apt-get install vncとうってしまいました。
これをuninstallしたいのですが
どのようにすればよろしいでしょうか?

教えて下さい。

Aベストアンサー

# apt-get remove パッケージ名
では、設定ファイルは削除されずに残ります。

完全に削除するときは、
# apt-get --purge remove パッケージ名
です。

QLNK2019: 未解決の外部シンボルのエラーが出る

Microsoft Visual Studio 2008
Version 9.0.21022.8 RTM
Microsoft .NET Framework
Version 3.5 SP1
----------------------------------------------------------------
新しいプリジェクト→Win32 コンソール アプリケーション(ソリューションのディレクトリを作成 チェック外す)→Windows アプリケーション(空のプロジェクト チェック外す)
----------------------------------------------------------------
 プログラム

 mymain.cpp
#include "myhelper.h"
#include "mymain.h"

//自キャラのデータ
Point2D g_jikipos = {40, 400};//自キャラの座標

//画像ハンドル
int g_jikiimage[11];

//色々なファイルの読み込み
int LoadFiles(){
//画像ファイル読み込み
if(LoadDivGraph("media\\player01.bmp",
11,11,1,64,64,g_jikiimage) == -1) return -1;

return 1;
}


 mymain.h
//他から呼び出させるMyMainの関数
void MyMain();
int LoadFiles();


 myhelper.h(サンプルなので打ちミスはない)
#include "DxLib.h"
#include <limits.h>
#include <math.h>

//構造体宣言
//座標またはベクトルを記録する構造体
struct Vector{
float x,y;
};
typedef Vector Point2D;
//線を記録する構造体
struct Line2D{
Point2D startpos, endpos;
float katamuki;//傾きをラジアン値で記録
Vector speed;//移動している場合は速度をセット
};
//球体を記録する構造体
struct Ball2D{
Point2D position;
float hankei;//半径
};
//四角形を記録する構造体
struct Rect2D{
Point2D lefttop;
Point2D rightbottom;
float width;
float height;
};


//ライブラリ関数
Point2D PosInView(Point2D in);
int XInView(float inx);
int YInView(float iny);
void ScrollToLeft(float jikiposx);
void ScrollToRight(float jikiposx);
void ScrollToUp(float jikiposy);
void ScrollToDown(float jikiposy);
void DrawLineInView(float x1, float y1, float x2, float y2, int Color, int Thickness);
void DrawCircleInView(float x, float y, float r, int Color, int FillFlag);
void DrawAnimation(float x, float y, double ExtRate, double Angle,int TurnFlag,
int *imgarray, int allframe, float fps);
//ベクトル関数
Vector CreateVector(Vector in, float veclen);
Vector AddVector(Vector v1, Vector v2);
Vector SubVector(Vector v1, Vector v2);
Vector AddVectorInFrameTime(Vector pos, Vector speed);
Vector AddVectorInFrameTime2(Vector pos, Vector speed, Vector accel);
Vector Normalize(Vector in);
Vector RotateVector(Vector in, float radian);
float VectorLengthSquare(Vector in);
float DotProduct(Vector v1, Vector v2);
float CrossProduct(Vector v1, Vector v2);
void SetLine2DKatamuki(Line2D *in);
void DrawLine2D(Line2D in, int Color, int Thickness);
void DrawBall2D(Ball2D in, int Color, int Fill);
//当たり判定関数
bool HitTestLineAndBall(Line2D linein, Ball2D ballin);
bool IsPointAtLineFace(Line2D linein, Point2D ptin);
bool HitTestLineAndLine(Line2D line1, Line2D line2);
bool HitTestBallAndBall(Ball2D a, Ball2D b);
bool HitTestPointAndBox(Rect2D rect, Point2D pt);
//タイマー関数
void SetSimpleTimer(int idx, int time);
int GetPassedTime(int idx);


//グローバル変数
extern float g_frametime;
extern Rect2D g_framerect;//画面領域(当たり判定)
extern Point2D g_current_field_pos;//現在の左上座標
extern Rect2D g_stagesize;//ステージサイズ

//定数宣言
const float ZEROVALUE = 1e-10f;
const float PIE = 3.1415926f;
const int SCROLL_LIMIT = 200;
----------------------------------------------------------------
 エラー内容
1>myhelper.obj : error LNK2019: 未解決の外部シンボル "void __cdecl MyMain(void)" (?MyMain@@YAXXZ) が関数 _WinMain@16 で参照されました
1>C:\Documents and Settings\Owner\My Documents\Visual Studio 2008\Projects\my\Debug\my.exe : fatal error LNK1120: 外部参照 1 が未解決です
1>my - エラー 2、警告 0
ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ
----------------------------------------------------------------
画像を貼り付けときます
(見えにくい場合→http://www.dotup.org/uploda/www.dotup.org154142.jpg.html)
初心者なのでわかりやすくお願いします

Microsoft Visual Studio 2008
Version 9.0.21022.8 RTM
Microsoft .NET Framework
Version 3.5 SP1
----------------------------------------------------------------
新しいプリジェクト→Win32 コンソール アプリケーション(ソリューションのディレクトリを作成 チェック外す)→Windows アプリケーション(空のプロジェクト チェック外す)
----------------------------------------------------------------
 プログラム

 mymain.cpp
#include "myhelper.h"
#include "mymain.h"

//自...続きを読む

Aベストアンサー

ファイル構成から推測するに
mymain.cpp というファイルに
void MyMain(void) {
// ここに処理を書く
}
という関数が必要なようです。

QC++:cinが上手く使えない

 そもそもcinについてあまり詳しい事は知らないのですが
よろしくおねがいします。
 cinを使って整数を取りこもうとする時、数字以外が
入ってしまうとおかしな動作をします。

 例えば「10未満の整数値を取りこむまで続くループ」で
入力部分を作ろうとした時に、

while(1){
 cout << "入力してください" << endl;
 cin >> int_a;
 if(int_a < 10) break;
}

大体 以上の様に書くと、入力する時にアルファベットが
入ってしまうと

入力して下さい
入力して下さい
…(エンドレス)…
入力して下さい

となってしまいます。cinをあきらめてscanfにしてみると
今度は実行時エラーがでてしまいます。
 整数を入力する事が出来て、なおかつアルファベットが
入力されても' 'で囲った値が入るようにするには
どのようにすればよいでしょうか?

Aベストアンサー

失礼しました
1でしているような
エラーのクリアとデータの破棄を忘れていました

#include <iostream>
using namespace std;

void main(void)
{
int int_a;

while(true)
{
cout << "入力してください" << endl;
cin >> int_a;
if(cin.good()==0)
{
cout<<"変なものを入力しないでください"<<endl;
cin.clear();
cin.seekg(0);
break;
}
cout<<int_a<<"が入力されました"<<endl<<endl;
if(int_a < 10) break;
}
}

Q関数とメソッドの違い

初歩的な質問なのですが、
関数とメソッドの違いが分からず悩んでいます。
書籍や人によって、
関数とメソッドは同じ物として書いている物もあれば、
メソッドはクラスに関連付いた関数としていたり、
クラスでもpublic関数だけとか、
引数のある物がメソッド、
逆に無い物がメソッド等々…で、
どれが正しいのか良く分からないのです。

関数とメソッドの違いを教えていただけますよう、
お願いいたします。

Aベストアンサー

正解だけ先に言っておきましょう。オブジェクト指向での定義は
「メソッドとは、オブジェクトに送られてきたメッセージを処理するモノ」
「関数とは、メソッドの実装」
ついでに、
「メッセージとは、オブジェクトに何かしらお願いするために送られるモノ」
です。メッセージとメソッドと関数は明確に違うのですよ。


上記の通りなんですが、質問の文について、なにが正しいか、という解答は「文脈による」としか言いよ
うが無いんです。
解説書の一部分だけ抜き出して考えるのは非常に危険な行為です。
文脈を色々変えてみます。例えばオブジェクト指向の話をしているとしたら、

>1. 関数とメソッドは同じ物として書いている物もあれば、
バツ。意味的に全く異なります。
'\0'と""とNULLと0くらい違います。等価なんていってしまったら石が飛びます。(私が投げます:-p)

> 2.メソッドはクラスに関連付いた関数としていたり、
サンカク。C++での実装はそうでしょうが、オブジェクト指向を考える上で、その考え方は危険です。

> 3.クラスでもpublic関数だけとか、
> 引数のある物がメソッド、
> 逆に無い物がメソッド等々…で、
バツ。引数の数でメソッドで無くなる?そんなバカな!
例えprivateでもメソッドですよ。


オブジェクト指向言語C++のことを考えよう!という文脈ならば、
1.サンカク。実装は確かにそうなってます。ですが、上記の通り意味的に違うんです。
2.○。C++において、メソッドは「クラスに関連ついた関数」として実装されてます。
3.そんなわけないでしょう。

オブジェクト指向?なにそれ?構造体に関数がくっついただけでしょ?と乱暴極まりない文脈なら、
1.○。当然!
2.なにいってるの?
3.サブルーチンとファンクションの違いだ!


と、文脈で全然変わるんですよ。これに関しては、本一冊だけだとなかなか気付きにくいです。
是非とも多数の本を読み比べることをお勧めします。

正解だけ先に言っておきましょう。オブジェクト指向での定義は
「メソッドとは、オブジェクトに送られてきたメッセージを処理するモノ」
「関数とは、メソッドの実装」
ついでに、
「メッセージとは、オブジェクトに何かしらお願いするために送られるモノ」
です。メッセージとメソッドと関数は明確に違うのですよ。


上記の通りなんですが、質問の文について、なにが正しいか、という解答は「文脈による」としか言いよ
うが無いんです。
解説書の一部分だけ抜き出して考えるのは非常に危険な行為です...続きを読む

Qint型からchar型への変換

タイトル通り、int型からchar型への変換の仕方がわかりません!><
どうしたらいいのでしょうか?

Aベストアンサー

#include <stdio.h>


char buf[5];
int no;

no = 10;
sprintf(buf, "%d", no);

QLinuxのgccのインクルードパス?

Linuxのgccで、インクルードファイルやライブラリのパスを設定する方法が知りたいのですが、gccについて詳しい書籍やサイトがありましたら、教えてください。

gccとccの違いも知りたいです。

例)
#include "example.h"

このままだと、example.hが無いと表示されます。

Aベストアンサー

標準ライブラリのパスは、gccのインストール時に指定して、Cプリプロセッサの中に組み込まれます。

#include "example.h"
は、まずカレントディレクトリを探し、次に gccコマンドラインの -I オプションで指定したディレクトリを探し、最後に標準ライブラリが探されます。

#include <example.h>
は、カレントディレクトリを探さない点が異なります。

ccも基本的には同じですが、Unixの種類によって機能が異なる可能性があります。Linuxの場合はcc=gccです。

Qlinux環境の変化とgccコンパイルによるエラー

以前CentOS6.6を使用しており、他の環境もいろいろ使ってみたいと思い、Ubuntu14.10の環境を構築しました。
CentOSでX11を用いて画像を表示するプログラムがあったのですが、それをそのままUbuntuにうつして実行してもエラーが出てできませんでした。
もちろんUbuntuにおいて、X11ライブラリのインストールはしましたし、コンパイルにはMakefileを用いてやっておりますが、-lX11のオプションも通してあります。
しかし、
xdisp.c:52: `XOpenDisplay' に対する定義されていない参照です
など、他の関数に対してもX11に関しては未定義のような挙動を見せます。
これはsqrt関数(math.h)に関しても同様のことが起こりました。
原因が分かる方いましたらよろしくお願いします。

Aベストアンサー

あれがコンパイルできるってことは, とりあえず
「これはsqrt関数(math.h)に関しても同様のことが起こりました。」
については「コンパイル環境の問題ではない」ことがほぼ確定だな.

で, 「最後にこういったエラーもでました」って言われても, それでは問題の解決にはなんら役にたたないことはわかるね? むしろ「関数の参照ができないというエラー」よりも前のメッセージが重要なんだよ.


人気Q&Aランキング