アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (17件中11~17件)

#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は上で書いたのと同様です。

エラーの種類がこれだけだとは思えません。
まだ他のタイプがあるんじゃないでしょうか?

この回答への補足

回答ありがとうございます。
指摘されたところを修正してみました。
前回出たエラーは無くなったようです。前回のものは最初の数行でしたので残りの部分も載せてみます。すこし多いのですがお願いします。

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()':

補足日時:2007/08/24 15:22
    • good
    • 0

> Linuxの環境で#include <windows.h>をコメントアウトしてコンパイルしてみたところエラーがたくさん出てきました.



どんなエラーが出たのか、メッセージをそのまま補足してください。
余りにも多い場合は、最初のいくつかだけでもかまいません。

> OpenGLだとWindows,Linux関係なく使えるようですね.

そんなに甘くはありません。
十分配慮すれば、共通のソースを記述できるというだけで、OpenGLを使えば無条件に移植性が得られるわけではありません。

この回答への補足

少し家を離れていたもので返事が遅くなり申し訳ないです。
エラーが非常に多かったので最初の数行だけ抜き出しました。

main.cc:7:18: conio.h: そのようなファイルやディレクトリはありません
main.cc:8: error: 'BYTE' is used as a type, but is not defined as a type.
main.cc:11 から include されたファイル中:
Serial.h:1:9: 警告: #pragma once はもう使われていません
Serial.h:3:21: windows.h: そのようなファイルやディレクトリはありません
In file included from main.cc:11:
Serial.h:13: error: `BYTE' was not declared in this scope

Serial.hというのはこちらで作ったヘッダーファイルのようです。
お時間があればよろしくお願いします。

補足日時:2007/08/22 17:38
    • good
    • 0

OpenGLは使ったことがありませんが、プラットフォーム共通のライブラリ


のようですので、OpenGLベースのアプリケーションなら特別なことを
せずとも移植可能のようです。同一ソース化もできるようです。

参考URL:http://www.geocities.co.jp/SiliconValley/7406/ti …
    • good
    • 0
この回答へのお礼

回答ありがとうございます.
また,返事が遅くなりすみません.
OpenGLは結果を表示するのに使用しているのでOpenGLベースかどうかはわかりません.
OpenGLだとWindows,Linux関係なく使えるようですね.

お礼日時:2007/08/10 03:23

> OpenGLはグラフを表示するためだけに使われています。



そのグラフはどうやって表示しているのでしょうか?
例えば * を並べて棒グラフを作るように、文字情報をコンソールに出力しているだけでしょうか? それならまあ問題ないでしょう。

> もう一度プログラムを見てみましたがLPCTSTRやTCHARといった記述はありませんでした。

Windows APIや関連する型・マクロなどはなかったでしょうか?
大文字で始まる関数や、FILE型以外の大文字で始まる型名があると、面倒なことになります。
手っ取り早く判断するには、#include <windows.h> の箇所をコメントアウトして、ビルドできるかどうか調べることです。

> この場合Makefileを書き直せばうまくいきそうですか?

上記しだいです。
    • good
    • 0
この回答へのお礼

返事が遅くなりすみません.
文字情報を出力しているのではなく,点をプロットしている感じです(おそらく).
#include<windows.h>をコメントアウトしてのビルドはできました.
が,警告がいくつかでました.

お礼日時:2007/08/10 03:10

> OpenGLは使っているようですがこれは問題ないでしょうか?



OpenGLを使ってGUIなしなのでしょうか?

> #include <windows.h>とあるのですが移植するときこの辺りはどう変えればいいのでしょうか?

どんな使い方をしているかによります。
先に書いた LPCTSTRやTCHAR は、比較的よく使われる環境依存の型名ですが、Windows APIに依存したコードがある場合には移植が難航するという点では同じです。
    • good
    • 0
この回答へのお礼

どういったらいいんでしょうか。
OpenGLはグラフを表示するためだけに使われています。
バリバリのGUIといった感じではありません。
もう一度プログラムを見てみましたがLPCTSTRやTCHARといった記述はありませんでした。

この場合Makefileを書き直せばうまくいきそうですか?

お礼日時:2007/08/07 10:32

> おそらく標準C++の範囲で書かれたものだと思うですが・・・



もしそのプログラムがGUIを使っていて、しかも簡単にビルドができるようであれば、かなり絶望的な状況が待っていると思います。
コマンドプロンプト上で動作するものであれば、まだ見込みがあります。

一度ソースファイルを覗いてみて、
#include "StdAfx.h" とか LPCTSTR とか TCHAR とかの記述がないか探してみてください。もし見つかるようだと、移植は確実に難航します。
    • good
    • 0
この回答へのお礼

GUIは使っていません。コマンドプロンプト上で動作するものです。
#include "StdAfx.h"やLPCTSTRやTCHARといった記述はありませんでした。

OpenGLは使っているようですがこれは問題ないでしょうか?
#include <windows.h>とあるのですが移植するときこの辺りはどう変えればいいのでしょうか?

お礼日時:2007/08/06 23:56

標準C++の範囲で書かれたプログラムであれば、ほぼコンパイルしなおすだけです。

(Makefileを書き直す等は必要ですが...)
標準外の記述が含まれていれば、ほぼその部分すべての書き換えが必要になります。ただし、Boost C++ LibrariesやQtなど、クロスプラットフォームのライブラリを用いていた場合は、状況がかなりましになります。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
おそらく標準C++の範囲で書かれたものだと思うですが・・・
そもそもMakefileの書き方も分かっていないくらいのレベルですので。
その辺りは自分でググって勉強しようと思います。ありがとうございます。

お礼日時:2007/08/06 20:15

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