• ベストアンサー

WindowsからLinuxへの移植

Microsoft Visual Studio .NET 2003で書かれたプログラムをLinux移植しようとしているのですがどこがどう違ってくるのでしょうか? 使用言語はC++です。あまりプログラムに詳しくないものでGoogleなどで調べてもよくわかりませんでした。 参考になるURLでもいいのでどなたか御教授お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • zwi
  • ベストアンサー率56% (730/1282)
回答No.5

私も手っ取り早くコンパイルしてみることをお勧めします。 詳しくない人が下調べしまくっても移植を始めてから問題が出てくるだけだろうと思いますので、コンパイルしてみて出てくるエラーをここで聞いたほうが早いと思います。 今Linuxの環境があるのであれば、#include <windows.h> をコメントアウトして、makefileなんて書かなくてよいですから、gcc -c file.cで試しにコンパイルしてみましょう。

the_koba
質問者

お礼

回答ありがとうございます. 返事が遅くなりましてすみません. Linuxの環境で#include <windows.h>をコメントアウトしてコンパイルしてみたところエラーがたくさん出てきました. Windowsでは#include <windows.h>をコメントアウトしてもビルド,実行はできました.

その他の回答 (16)

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.17

>Serial.cc:103: error: 文法エラー before `{' token >ソース:if(write(ComFd, &data, sizeof(BYTE)){ 勘ですが、これで直るかも? if( 0 < write(ComFd, &data, sizeof(BYTE) ){ これでだめなら、CmdFd,data,BYTEがちゃんと定義されているか確認とwriteだから #include <stdio.h> が定義されているかを確認してください。 >Serial.cc:155: error: `COMSTAT' undeclared (first use this function) >Serial.cc:155: error: (Each undeclared identifier is reported only once for each function it appears in.) >Serial.cc:155: error: 文法エラー before `;' token >ソース:COMSTAT ComStat; これもRS232C関係ですね。下と交えて解説します。 >Serial.cc:158: error: `hCom' undeclared (first use this function) >Serial.cc:158: error: `ComStat' undeclared (first use this function) >Serial.cc:158: error: `ClearCommError' undeclared (first use this function) >ソース:ClearCommError(hCom, &dwErrors, &ComStat); undeclared はすべて定義されていないと言う意味です。COMSTATと関数ClearCommErrorはすでに受信しているサイズを調べるのに使います。Serial.ccの中でどのような処理が行われているか分からないので断言できませんが、linuxで直接代替する関数は知りません。 やはり単純な関数の置き換えでは移植は難しいようですので、Serial.cc全体をちゃんと理解してlinux用に書き換えないと動かないと思います。 参考になりそうなページをみつけたのでご覧ください。 http://www.linux.or.jp/JF/JFdocs/Serial-HOWTO.html

the_koba
質問者

お礼

ありがとうございます. もう少しシリアル通信について自分で勉強してみます.

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.16

そのまま置き換える関数はLinuxには無さそうです。 なので代案を提案します。とついでに訂正を。 open時にO_NONBLOCKを指定していますので、非ブロックアクセスモードになっていました。 この場合、read後やwrite後にselect関数で同期処理を行うようにプログラムを修正してやるやる必要がありました。このselect関数のパラメータとしてタイムアウト時間を指定することができます。これを使えば同等にタイムアウトの処理が実現できると思います。 ただし、私はRS232Cの通信がLinuxでは経験がないので、ウソを言っている可能性があるのを警告しておきます。 このあたりを参考にしてみてください↓。 http://homepage3.nifty.com/skyone/item12.html たぶん、テストと試行錯誤を繰り返して、うまく行く方法を探ることになるかと思います。

the_koba
質問者

補足

ありがとうございます。 私もまだ全然理解できていないのでもう少し調べてみます。 他にもエラーが出ているので見ていただけますか? Serial.cc:103: error: 文法エラー before `{' token ソース:if(write(ComFd, &data, sizeof(BYTE)){ Serial.cc:155: error: `COMSTAT' undeclared (first use this function) Serial.cc:155: error: (Each undeclared identifier is reported only once for each function it appears in.) Serial.cc:155: error: 文法エラー before `;' token ソース:COMSTAT ComStat; Serial.cc:158: error: `hCom' undeclared (first use this function) Serial.cc:158: error: `ComStat' undeclared (first use this function) Serial.cc:158: error: `ClearCommError' undeclared (first use this function) ソース:ClearCommError(hCom, &dwErrors, &ComStat);

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.15

>全体的にSerial.cc:26: error: 文法エラー before `.' tokenのようなエラーが多いです。 main.ccと同じようなエラーが出てますので、分かる範囲でとりあえずmain.ccにやったのと同じことをまずやってみてください。それでだいぶ減ると思います。 それで残ったやつを潰しましょう。

the_koba
質問者

お礼

ありがとうございます。 少し自分で修正してみます。

the_koba
質問者

補足

できるだけやってみたのですが、やはりどうにもわからないことが多いのでもう少し質問させてください。 まずタイムアウトの設定なんですがWindowsのプログラムでは下記のように設定されています。Linuxにおいてはどのようにタイムアウトを設定すればいいのでしょうか? GetCommTimeouts(ComFd,&ctmo); ctmo.ReadIntervalTimeout = 0; ctmo.ReadTotalTimeoutMultiplier = 10; ctmo.ReadTotalTimeoutConstant = 50; ctmo.WriteTotalTimeoutMultiplier = 10; ctmo.WriteTotalTimeoutConstant = 50; if(!SetCommTimeouts(ComFd,&ctmo)) return false;

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.14

全体的に日本語の文字列でエラーが出てますね。ソースファイルの文字コードをEUCにすれば解決するかもしれません。 でも、一番簡単な方法は、英数字だけにするのが簡単です。元の分はコメントで残しておいて、英語の文章かローマ字にします。 >とりあえず自分でmakefileを書いてみたのですがmain.ccがコンパイルできないのでそこで止まってます。 >まずmain.ccをコンパイルできるようにするのが第一なのですか? エラーとmakefileを見せてもらえば答えられると思います。 >また、OpenGLライブラリのリンクはどのようにするんでしょうか? 私はLinuxはコンソール派で、Xウィンドのアプリを書いたことがないのでOpenGLも未経験なんですよ。お役に立てなくて申し訳ない。 ここ↓は参考になりません? http://www.wakayama-u.ac.jp/~tokoi/opengl/libglut.html

the_koba
質問者

補足

# Makefile LRF_ver2: main.o Serial.o g++ -o LRF_ver2 main.o Serial.o main.o: main.cc g++ -c main.cc Serial.o: Serial.cc g++ -c Serial.cc main.cc: Serial.h Serial.cc: Serial.h どうやらmain.ccのコンパイルは通ったようです。 が、今度はSerial.ccの方でエラーが出てきました。 g++ -c Serial.cc In file included from Serial.cc:3: Serial.h:24: error: `BYTE' was not declared in this scope Serial.h:24: error: 文法エラー before `)' token Serial.h:26: error: 文法エラー before `)' token Serial.h:37: error: 'BYTE' is used as a type, but is not defined as a type. Serial.cc: member function 内の `bool CSerial::InitSerial(char*, int)': Serial.cc:20: error: 文法エラー before `{' token Serial.cc: At global scope: Serial.cc:26: error: 文法エラー before `.' token Serial.cc:29: error: `ComFd' was not declared in this scope Serial.cc:29: error: `tio' was not declared in this scope Serial.cc:29: error: ISO C++ forbids declaration of `tcgetattr' with no type Serial.cc:29: error: `int tcgetattr' redeclared as different kind of symbol 全体的にSerial.cc:26: error: 文法エラー before `.' tokenのようなエラーが多いです。 こちらの方もよろしければ見ていただけますか?

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.13

地道にエラーを潰していくしか無さそうです。 >main.cc: function 内の `void Write_data(WORD (*)[682])': >main.cc:203: error: `ZeroMemory' undeclared (first use this function) >main.cc:203: error: (Each undeclared identifier is reported only once for each function it appears in.) ZeroMemory(xx,yy); は、 memset(xx,0x00,yy); と書き換えてください。 >main.cc:245:16: 警告: 不明なエスケープシーケンス '\!' この行は見ないと分かりません。日本語の問題な気がしますが。 >main.cc: function 内の `int main(int, char**)': >main.cc:247: error: `kDL' undeclared (first use this function) >main.cc:247: error: 文法エラー before `.' token >main.cc:247: error: stray '\33' in program >main.cc:247:67: " 文字での終端を欠いています >main.cc:248: error: stray '\33' in program >main.cc:248:41: " 文字での終端を欠いています >main.cc:251: error: 構文解析エラー before `@' token >main.cc:251:55: invalid suffix "y" on floating constant >main.cc:251: error: stray '\33' in program >main.cc:251: error: stray '\' in program >main.cc:251:65: " 文字での終端を欠いています >main.cc:294:53: exponent has no digits >main.cc:294: error: stray '\33' in program >main.cc:294:67: " 文字での終端を欠いています >main.cc:295: error: stray '\33' in program >main.cc:295:41: " 文字での終端を欠いています >main.cc:298: error: stray '\33' in program >main.cc:298: error: stray '\' in program >main.cc:298:50: " 文字での終端を欠いています これは、すべてその行を見ないと何とも言えませんね。 >今main.ccだけをコンパイルしているのですが、やはりMakefileなどは書かなくて良いのでしょうか? main.ccとSerial.ccをリンクするためには、makefileを書かないといけませんね。OpenGLのライブラリのリンクのためにも必要です。

the_koba
質問者

補足

エラーに対するそれぞれのソースは以下の通りです。 main.cc:247:16: 警告: 不明なエスケープシーケンス '\!'            ↓ printf("ポート=%s, ボーレート=%d\n",ComPort, baudrate); main.cc:249: error: `kDL' undeclared (first use this function) main.cc:249: error: (Each undeclared identifier is reported only once for each function it appears in.) main.cc:249: error: 文法エラー before `.' token main.cc:249: error: stray '\33' in program main.cc:249: error: stray '\33' in program           ↓ MessageBox(NULL, TEXT("シリアル通信初期化失敗"), TEXT("シリアル通信"), MB_ICONERROR | MB_OK); main.cc:251: error: 構文解析エラー before `@' token main.cc:251:47: invalid suffix "y" on floating constant main.cc:251: error: stray '\33' in program main.cc:251: error: stray '\' in program main.cc:251:57: " 文字での終端を欠いています           ↓ printf("シリアル通信初期化成功!\n"); main.cc:294:54: exponent has no digits main.cc:294: error: stray '\33' in program main.cc:294: error: stray '\33' in program           ↓ MessageBox(NULL, TEXT("シリアル通信後始末失敗"), TEXT("シリアル通信"), MB_ICONERROR | MB_OK); main.cc:296: error: stray '\33' in program main.cc:296: error: stray '\' in program main.cc:296:50: " 文字での終端を欠いています           ↓ printf("シリアル通信終了!\n"); とりあえず自分でmakefileを書いてみたのですがmain.ccがコンパイルできないのでそこで止まってます。 まずmain.ccをコンパイルできるようにするのが第一なのですか? また、OpenGLライブラリのリンクはどのようにするんでしょうか?

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.12

>COMMTIMEOUTS ctmo;についてはどのようにすればいいのでしょうか? >ソースではGetCommState(hCom, &dcb);はこの一行のみ書かれていました。 >これはこのままでいいのでしょうか? とりあえず、Linuxにない関数はコメントアウトしておいてください。 実際に動かしてみないと問題が出てこない可能性があります。 >あとdcb.BaudRate = CBR_115200;やdcb.ByteSize = 8;といった記述があるのですがこれはdcbをtioに代えればいいのでしょうか? そうです。tioに置き換える必要があります。 >ソースコードを書き直してもコンパイルしたときのエラーに何も変化はなかったのですが、これで問題がないのか、あるいは実行したときでないとどういう問題が起こるかわからないのでしょうか? エラーに変化がないですか?まだエラーが出てますか? 追加インクルードは追加してもらえました? もし、それでも出てくるエラーがあるならここに貼り付けてみてください。 エラーのレベルによってはコンパイルが完了せず実行ファイルが出来ていない可能性がありますが、実行ファイルは出来ているのでしょうか?

the_koba
質問者

補足

HANDLEやDCBに関するエラーは無くなりました。 追加インクルードは追加しました。 まだでてくるエラーは以下のものです。 main.cc: function 内の `void Write_data(WORD (*)[682])': main.cc:203: error: `ZeroMemory' undeclared (first use this function) main.cc:203: error: (Each undeclared identifier is reported only once for each function it appears in.) main.cc:245:16: 警告: 不明なエスケープシーケンス '\!' main.cc: function 内の `int main(int, char**)': main.cc:247: error: `kDL' undeclared (first use this function) main.cc:247: error: 文法エラー before `.' token main.cc:247: error: stray '\33' in program main.cc:247:67: " 文字での終端を欠いています main.cc:248: error: stray '\33' in program main.cc:248:41: " 文字での終端を欠いています main.cc:251: error: 構文解析エラー before `@' token main.cc:251:55: invalid suffix "y" on floating constant main.cc:251: error: stray '\33' in program main.cc:251: error: stray '\' in program main.cc:251:65: " 文字での終端を欠いています main.cc:294:53: exponent has no digits main.cc:294: error: stray '\33' in program main.cc:294:67: " 文字での終端を欠いています main.cc:295: error: stray '\33' in program main.cc:295:41: " 文字での終端を欠いています main.cc:298: error: stray '\33' in program main.cc:298: error: stray '\' in program main.cc:298:50: " 文字での終端を欠いています コンパイルしましたが実行ファイルはできていません。 元のプログラムはmain.cc、Serial.h、Serial.ccという3つのファイルでできているみたいなのですが、シリアルポート関係の関数は全てSerial.ccで記述されていて、main.ccでは関数を呼び出しているだけのようです。 今main.ccだけをコンパイルしているのですが、やはりMakefileなどは書かなくて良いのでしょうか?

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.11

私もLinuxでのシリアルポート操作はやったことがないのでヒント程度になりますが、ご了承ください。完璧な自信はないです。 追加するインクルード。 #include <fcntl.h> #include <termios.h> #include <unistd.h> HANDLE hCom; ↓ int ComFd; DCB dcb; ↓ struct termios tio; >hCom = CreateFile(comport, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); if((ComFd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NONBLOCK))<0) { // エラー処理 } >GetCommState(hCom, &dcb) ; tcgetattr ( ComFd, &tio ); GetCommState後のプログラムの操作が書かれていなかったので、ここを参考に修正してください。 http://komatta.astron.s.u-tokyo.ac.jp/~kato/other/termios/index.html シリアルポートのパラメータが良くわからなかったら元のプログラムの操作を教えてもらえば、例は書けると思いますが最終的に動作のデバッグをする本人が理解しないと後で苦労することになると思います。 >SetCommState(hCom, &dcb); tcsetattr(ComFd, TCSANOW, &tio); >GetCommTimeouts(hCom,&ctmo); >SetCommTimeouts(hCom,&ctmo); 該当するLinuxの関数を探せませんでした。タイムアウト時間に関する操作のための関数です。とりあえず、設定しなくても動くと思います。 >PurgeComm(hCom, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR); tcflush(ComFd, TCIOFLUSH); // 入出力バッファをクリアします。 >CloseHandle(hCom) close(ComFd); >WriteFile(hCom, &data, sizeof(BYTE), &byte, NULL) byte = write(ComFd, &data, sizeof(BYTE)); >WriteFile(hCom, data, size, &byte, NULL) byte = write(ComFd, data, size); >ReadFile(hCom, &data, 1, &byte, NULL); byte = read(ComFd,&data,1); >ReadFile(hCom, data, size, &byte, NULL); byte = read(ComFd,data,size); >ClearCommError(hCom, &dwErrors, &ComStat); エラー処理に関わる関数だと思うのですが、該当するLinuxの関数を探せませんでした。Windowsで、この関数を使ったことがないので良くわかりません(^^ゞ >PurgeComm(hCom, PURGE_RXABORT | PURGE_RXCLEAR); tcflush(ComFd, TCIFLUSH); // 入力バッファをクリアします。

the_koba
質問者

補足

ありがとうございます。 COMMTIMEOUTS ctmo;についてはどのようにすればいいのでしょうか? ソースではGetCommState(hCom, &dcb);はこの一行のみ書かれていました。 これはこのままでいいのでしょうか? あとdcb.BaudRate = CBR_115200;やdcb.ByteSize = 8;といった記述があるのですがこれはdcbをtioに代えればいいのでしょうか? ソースコードを書き直してもコンパイルしたときのエラーに何も変化はなかったのですが、これで問題がないのか、あるいは実行したときでないとどういう問題が起こるかわからないのでしょうか? 質問攻めになってしまいましたがどうぞよろしくお願いします。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.10

あっ間違ってました。つづりと型を。 typedef unsigned short WORD; に訂正します。それと typedef unsigned int DWORD; を追加してください。 これで今まで出てきた中のシリアルポート以外は解決すると思います。 使っているシリアルポート関係の関数を教えてもらえますか? 参考↓シリアルポート制御に使う関数。 http://d.hatena.ne.jp/paruto/20060228 使われている関数と使われているパラメータをすべて教えてください。 代替のLinux関数を書きますので。

the_koba
質問者

補足

ありがとうございます。 シリアルポート関係で使われている関数は以下の通りです。 hCom = CreateFile(comport, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); GetCommState(hCom, &dcb) ; SetCommState(hCom, &dcb); GetCommTimeouts(hCom,&ctmo); SetCommTimeouts(hCom,&ctmo) PurgeComm(hCom, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR); CloseHandle(hCom) WriteFile(hCom, &data, sizeof(BYTE), &byte, NULL) WriteFile(hCom, data, size, &byte, NULL) ReadFile(hCom, &data, 1, &byte, NULL); ReadFile(hCom, data, size, &byte, NULL); ClearCommError(hCom, &dwErrors, &ComStat); urgeComm(hCom, PURGE_RXABORT | PURGE_RXCLEAR); これで良かったのでしょうか? どうぞよろしくお願いします。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.9

一筋縄では解決しなさそうです。やっかいな問題がいくつか出てきています。 >Serial.h:19: error: 文法エラー before `*' token >Serial.h:20: error: 文法エラー before `)' token これだけだと分からないですね。19,20行目の内容が見たいです。 >Serial.h:24: error: 'HANDLE' is used as a type, but is not defined as a type. WindowsAPIのハンドルの用ですが、何に使っているものか分からないと代替案は出せませんね。ヘッダよりも使っているソースコード側が問題となります。 >Serial.h:25: error: 'DCB' is used as a type, but is not defined as a type. DCB構造体ですか?シリアルポートの制御を行う場合に必要な構造体ですが。シリアルポートを使われてますか?上のハンドルとも関係しそうですね。 >Serial.h:26: error: 'BOOL' is used as a type, but is not defined as a type. これは自前で定義します。 typedef int BOOL; で大丈夫だと思います。 >Serial.h:28: error: 'COMMTIMEOUTS' is used as a type, but is not defined as a type. これもシリアルポート関係です。 >main.cc:18:18: glut.h: そのようなファイルやディレクトリはありません これはOpenGLのヘッダですね。OpenGLには詳しくないのですが、インストールされていないか、パスの見えるところにヘッダが存在しないものと 思われます。 include <GL/glut.h> で通る場合もあるようです。 >main.cc:22: error: 文法エラー before `[' token >main.cc:23: error: 文法エラー before `[' token これだけだと分からないですね。22,23行目の内容が見たいです。 >main.cc:30: error: `WORD' was not declared in this scope >main.cc:30: error: 文法エラー before `[' token これもLinuxでは無いので、 typedef uisigned int WORD; と定義します。 >main.cc: function 内の `void idle()': >main.cc:35: error: `glutPostRedisplay' undeclared (first use this function) >main.cc:35: error: (Each undeclared identifier is reported only once for each function it appears in.) >main.cc: function 内の `void display()': >main.cc:40: error: `g_distance' undeclared (first use this function) >main.cc:48: error: `GL_COLOR_BUFFER_BIT' undeclared (first use this function) >main.cc:48: error: `glClear' undeclared (first use this function) >main.cc:49: error: `glColor3d' undeclared (first use this function) >main.cc:50: error: `GL_MODELVIEW' undeclared (first use this function) >main.cc:50: error: `glMatrixMode' undeclared (first use this function) >main.cc:51: error: `glLoadIdentity' undeclared (first use this function) >main.cc:67: error: `GL_LINES' undeclared (first use this function) >main.cc:67: error: `glBegin' undeclared (first use this function) >main.cc:68: error: `glVertex2d' undeclared (first use this function) >main.cc:70: error: `glEnd' undeclared (first use this function) >main.cc:92: error: `GL_LINE_STRIP' undeclared (first use this function) >main.cc:125: error: `glutSwapBuffers' undeclared (first use this function) glut.hをインクルードできれば解決すると思います。

the_koba
質問者

補足

ありがとうございます。 ご指摘の通り修正しましたところ、だいぶエラーが減りました。 OpenGL関係のエラーがたくさんありました。 それでもまだまだエラーがありますのでよろしくお願い致します。 Serial.h:22: error: 文法エラー before `*' token Serial.h:23: error: 文法エラー before `)' token の部分ですがソースでは DWORD Read2(void* data, int size); DWORD CheckSerialData(void); のようになっていました。 >DCB構造体ですか?シリアルポートの制御を行う場合に必要な構造体ですが。シリアルポートを使われてますか?上のハンドルとも関係しそうですね。 シリアルポートを使っています。おそらくDCB構造体だと思われます。 hComはどうやらポートのハンドル(?)を示しているようです。 以下のように使われています。 GetCommState(hCom, &dcb);         ↑  ↑        HANDLE DCB GetCommTimeouts(hCom,&ctmo);              ↑            COMMTIMEOUTS main.cc:23: error: 文法エラー before `[' token main.cc:24: error: 文法エラー before `[' token の部分は WORD g_distance[1][682]; WORD save_distance[SAVE_SIZE][682]; のようになっていました。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.8

#5のzwiです。 >main.cc:7:18: conio.h: そのようなファイルやディレクトリはありません Linuxにconio.hは無いですね。getch()関数を使っていた場合は、私は使ったことが無いのですがcursesライブラリに代替できるものがあるようです。申し訳ないのですが詳しく無いのでこれ以上は説明できません。 >main.cc:8: error: 'BYTE' is used as a type, but is not defined as a type. Linuxには定義してあるヘッダがありませんので、typedef unsigned char BYTE;をヘッダ定義してください。 >main.cc:11 から include されたファイル中: >Serial.h:1:9: 警告: #pragma onceはもう使われていません gccのバージョンによっては使えるみたいです。 代替として, #ifndef __SERIAL_H__ #define __SERIAL_H__ <元のヘッダの中身> #endif に置き換えるという手段があります。 >Serial.h:3:21: windows.h: そのようなファイルやディレクトリはありませんIn file included from main.cc:11: これは無いので削除してください。 >Serial.h:13: error: `BYTE' was not declared in this scope BYTEは上で書いたのと同様です。 エラーの種類がこれだけだとは思えません。 まだ他のタイプがあるんじゃないでしょうか?

the_koba
質問者

補足

回答ありがとうございます。 指摘されたところを修正してみました。 前回出たエラーは無くなったようです。前回のものは最初の数行でしたので残りの部分も載せてみます。すこし多いのですがお願いします。 Serial.h:19: error: 文法エラー before `*' token Serial.h:20: error: 文法エラー before `)' token Serial.h:24: error: 'HANDLE' is used as a type, but is not defined as a type. Serial.h:25: error: 'DCB' is used as a type, but is not defined as a type. Serial.h:26: error: 'BOOL' is used as a type, but is not defined as a type. Serial.h:28: error: 'COMMTIMEOUTS' is used as a type, but is not defined as a type. main.cc:18:18: glut.h: そのようなファイルやディレクトリはありません main.cc:22: error: 文法エラー before `[' token main.cc:23: error: 文法エラー before `[' token main.cc:30: error: `WORD' was not declared in this scope main.cc:30: error: 文法エラー before `[' token main.cc: function 内の `void idle()': main.cc:35: error: `glutPostRedisplay' undeclared (first use this function) main.cc:35: error: (Each undeclared identifier is reported only once for each function it appears in.) main.cc: function 内の `void display()': main.cc:40: error: `g_distance' undeclared (first use this function) main.cc:48: error: `GL_COLOR_BUFFER_BIT' undeclared (first use this function) main.cc:48: error: `glClear' undeclared (first use this function) main.cc:49: error: `glColor3d' undeclared (first use this function) main.cc:50: error: `GL_MODELVIEW' undeclared (first use this function) main.cc:50: error: `glMatrixMode' undeclared (first use this function) main.cc:51: error: `glLoadIdentity' undeclared (first use this function) main.cc:67: error: `GL_LINES' undeclared (first use this function) main.cc:67: error: `glBegin' undeclared (first use this function) main.cc:68: error: `glVertex2d' undeclared (first use this function) main.cc:70: error: `glEnd' undeclared (first use this function) main.cc:92: error: `GL_LINE_STRIP' undeclared (first use this function) main.cc:125: error: `glutSwapBuffers' undeclared (first use this function) main.cc: function 内の `void init()':

関連するQ&A

  • vine linuxについてです。

    学校でvine linexを利用してc言語のプログラム作成の授業を受けています。(emacsを起動してcプログラムを作り端末でコンパイルして実行) windowsでも同じように作成できるソフトありませんか? Microsoft Visual C++ 2008を持っていますがvine linuxとでは何か違う感じがしてしまいます。 やはりcoLinuxをインストールしたほうがよいのでしょうか?

  • windows10でVC6.0++のclを使いたい

    cl.exeの場所:C:\Program Files\Microsoft Visual Studio\VC98\Bin 環境変数INCLUDE設定:C:\Program Files\Microsoft Visual Studio\VC98\Include 環境変数LIB設定:C:\Program Files\Microsoft Visual Studio\VC98\Lib を登録したのですが、mspdb60.dllがないといわれました。 検索したらあるのですが、 どうすれば、Windows10でvc6.0++のCコンパイラを使えますか? 教えてくださいよろしくお願いします。

  • LAN内接続マシン数及びIP、マシン名の表示について

    VB.NET、C言語を使用してLAN内に接続しているマシン数とそのマシンのコンピュータ名、IPを取得するプログラムを各言語で開発したいのですが参考になるものが無く困っています。 参考になるURLや方法を教えていただきたいです。 開発環境はVBはWin XPでVisual Studio 2003でC言語は gccでやろうと思っています。

  • VC6.0からVC7.0への移植

    VisualStudioでプログラムしています。 このたび、VC6.0で作ったプログラムをVC7.0(.NET?)に移植しようとしたところ、 「MSVCIRTD.LIBがありません」とエラーが出たので、 Microsoft Visual Studio\VC98\LibにあったMSVCIRTD.LIBをコピーしてコンパイルを通したのですが、 今度はvc60.pdbが見つからないというwarningが出てしまいます。 warningなので無視して実行しようとすると、 強制終了してしまいます。 VC6.0で作ったプログラムのファイル構成と比べると、 確かにvc70.pdbはあるのですが、vc60.pdbはありません。 ご存知の方がいましたら、問題の解決方法をご教授くださいよろしくお願いします。

  • Linux用プログラムのデバッグには何を使っていますか?

    Linux用プログラムのデバッグには何を使っていますか? WindowsならVisual Studioなんかを使っている方が多いと思うのですが、Linux用の商用プログラムを作成している方は、どんなデバッガを使っているのでしょうか? よろしくお願いします。

  • Visual ~関係のプログラミング言語

     現在C++で統計解析のためのプログラミング(といってもコンソールプログラムですが)をしています。  Visual Studio、Visual Basic、Visual C++、Visual C#、Visual J#とかだと比較的簡単にプログラミングができるようなので、少しやってみようと考えています。 そこで、どれを購入しようか悩んでいます。正確にはBasicかC++のどちらかにしようとしているのですが、何かアドバイスをお願いします。ちなみに、Visual Studio.NET Professionalは使用言語を選べるようですがコスト面など等なども含めてご教授お願いします。

  • Windows Mobile開発をしたいのですが

    windows mobile6端末機を持っています。 そこで質問なのですが、windows mobile6用のソフト(アプリ?)を開発したいのですが、どのようなソフトが必要なのですか? 私としてはmicrosoftのvisual c++などを選びたいのですが。 ・どのようなソフトが必要か? ・何の言語が一番使いやすいか? ・参考になるページ・書籍など ・visual studio expressは使えるか? 以上を教えて下さい。 なるべく予算は減らしたいのです。 いろいろわがまま書きましたが、よろしくお願いします。

  • windows7でプログラムがうまく動かない

    こんにちは。 プログラムで困ったことがあったので、質問します。 win XPにインストールしたvisual studio 2005で作ったC言語のプログラムをwin7にインストールしたvisual studio 2005で実行したところ、実行の画面は開いたのですが、その後が通常通りの操作に至りません。 このような場合はWindows XPモードで行うしかないのでしょうか? あまり詳しくかけないで申し訳ないのですが、よろしくお願いいたします。

  • Windowsで…

    WindowsでC言語のプログラムを作成するには 「Microsoft Visual C++」のような有料のソフトを 購入しなければいけないのですか? 後、ソフト以外にも何かそろえなければいけないものがあるのでしょうか? 出来ればお金をかけずにすめばいいのですが。

  • Linux上でvbアプリは動きますか?

    Windows上で制作したvbアプリを、Linux上で動作させることができますか? 『.net core』でlinux上で.netが使えると聞きかじりました。 ならば、 Visual Studio 2015のVBでプラットフォームを『.net framework 4.5』や『.net framework 4.6』でなく、 『.net core』で制作すればWindows上で制作したvbアプリを、Linux上で動作させることができますか? Windows10にインストールされたVisual Studio 2015のVBで、 画面上に「終了」ボタンがあるだけのサンプルプログラムを作り、 CentOS7上で実行してみたいと思いました。 そのようなことは可能ですか? .net core http://getdotnet.azurewebsites.net/target-dotnet-platforms.html .NET Blog https://blogs.msdn.microsoft.com/dotnet/

専門家に質問してみよう