• ベストアンサー

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)

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.7

> Linuxの環境で#include <windows.h>をコメントアウトしてコンパイルしてみたところエラーがたくさん出てきました. どんなエラーが出たのか、メッセージをそのまま補足してください。 余りにも多い場合は、最初のいくつかだけでもかまいません。 > OpenGLだとWindows,Linux関係なく使えるようですね. そんなに甘くはありません。 十分配慮すれば、共通のソースを記述できるというだけで、OpenGLを使えば無条件に移植性が得られるわけではありません。

the_koba
質問者

補足

少し家を離れていたもので返事が遅くなり申し訳ないです。 エラーが非常に多かったので最初の数行だけ抜き出しました。 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というのはこちらで作ったヘッダーファイルのようです。 お時間があればよろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • R32C
  • ベストアンサー率39% (115/290)
回答No.6

OpenGLは使ったことがありませんが、プラットフォーム共通のライブラリ のようですので、OpenGLベースのアプリケーションなら特別なことを せずとも移植可能のようです。同一ソース化もできるようです。

参考URL:
http://www.geocities.co.jp/SiliconValley/7406/tips/opengl/opengl_0.html
the_koba
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.4

> OpenGLはグラフを表示するためだけに使われています。 そのグラフはどうやって表示しているのでしょうか? 例えば * を並べて棒グラフを作るように、文字情報をコンソールに出力しているだけでしょうか? それならまあ問題ないでしょう。 > もう一度プログラムを見てみましたがLPCTSTRやTCHARといった記述はありませんでした。 Windows APIや関連する型・マクロなどはなかったでしょうか? 大文字で始まる関数や、FILE型以外の大文字で始まる型名があると、面倒なことになります。 手っ取り早く判断するには、#include <windows.h> の箇所をコメントアウトして、ビルドできるかどうか調べることです。 > この場合Makefileを書き直せばうまくいきそうですか? 上記しだいです。

the_koba
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.3

> OpenGLは使っているようですがこれは問題ないでしょうか? OpenGLを使ってGUIなしなのでしょうか? > #include <windows.h>とあるのですが移植するときこの辺りはどう変えればいいのでしょうか? どんな使い方をしているかによります。 先に書いた LPCTSTRやTCHAR は、比較的よく使われる環境依存の型名ですが、Windows APIに依存したコードがある場合には移植が難航するという点では同じです。

the_koba
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

> おそらく標準C++の範囲で書かれたものだと思うですが・・・ もしそのプログラムがGUIを使っていて、しかも簡単にビルドができるようであれば、かなり絶望的な状況が待っていると思います。 コマンドプロンプト上で動作するものであれば、まだ見込みがあります。 一度ソースファイルを覗いてみて、 #include "StdAfx.h" とか LPCTSTR とか TCHAR とかの記述がないか探してみてください。もし見つかるようだと、移植は確実に難航します。

the_koba
質問者

お礼

GUIは使っていません。コマンドプロンプト上で動作するものです。 #include "StdAfx.h"やLPCTSTRやTCHARといった記述はありませんでした。 OpenGLは使っているようですがこれは問題ないでしょうか? #include <windows.h>とあるのですが移植するときこの辺りはどう変えればいいのでしょうか?

全文を見る
すると、全ての回答が全文表示されます。
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.1

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

the_koba
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。

関連する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/