- 締切済み
UNIXからC++.NETへの移植
UNIXのソースをC++.NETへの変換(移植)をするにはどうすればいいでしょうか? よろしくお願い致します。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- joe-
- ベストアンサー率34% (11/32)
Linuxとwindowsの通信方法の違いを見るには、 http://www.geekpage.jp/programming/linux-network/ http://www.geekpage.jp/programming/winsock/ の2つを見比べてみてはいかがでしょうか。 現在使っているUNIXがLinuxで無い場合でも、UNIX系OSとLinuxの通信方法はほぼ一緒なので問題ないと思われます。 ただ、windowsコードに移植するときに、通信部分以外が結構はまるかもしれません。例えば、「snprintfが無い!」と叫んでしまうかも知れません。また、もとコードがX11系GUIを使っていたり、特定のキャラクタデバイスを使っていたりすると大部分の書き直しを覚悟した方が良いかもしれません。
- tikisukeman2
- ベストアンサー率32% (32/99)
自動的に変換する事は無理。 ソースコードを持っていると言う事は、それは自作?それともオープンソース? 自作なら移植はどーすればいいか分かると思うんだけど。 UNIX ではそのソースをメイクして使ってるんじゅないの?Windows 用のメイク環境HPにあるかもよ。 そのアプリとソースの出所が分かればアドバイスしやすいんだけどね。。。。
- jacta
- ベストアンサー率26% (845/3158)
> UNIXのソースをC++.NETへの変換 まさかとは思いますが、Visual C++.NETを使用して、何らかのUNIX OS自体を移植するということでしょうか? もしその場合、CygwinのようにWindows上のアプリケーションとしてUNIX OSを実現するのか、Windowsとは切り離された形でUNIX OSを起動させるのかを選択しなければなりません。 単にUNIX上で動作するアプリケーションの移植であれば、場合によっては小手先の修正でも何とかなる可能性もありますし、大幅な修正が必要になる可能性もあります。 UNIX向けのデバイスドライバの場合は、おそらく作り直しになるかと思います。 実際のところは、どんなものを移植したいのでしょうか? # 字面からはOS自体の移植と読み取れるのですが...
補足
ありがとうございます。 UNIXでソケット通信のアプリを使用していたのですが、機種の切替でWindowsに変更になったので、C++.NETで変換して使用ができればと思うのですが・・・
- xcrOSgS2wY
- ベストアンサー率50% (1006/1985)
C++.NETと書かれているので、開発環境としてはVisual C++ .NET(おそらく2003)を念頭に置かれているのだと思いますが、POSIXサブシステムを使用する場合、Visual C++ .NETは単なる「統合エディタ」として使うことになります。 というのも、付属している膨大なウィザードやライブラリはすべてWin32サブシステムで使用することを前提としたもので、POSIXサブシステムを前提としたものは一切ないからです。またVisual C++ .NETの統合環境下ではPOSIXサブシステム向けにコンパイル・リンクを行うことすらできません。 Visual C++ .NETのツール(コンパイラcl.exeやリンカlink.exe)をコマンドライン上で呼び出して自力でコンパイル・リンクを行うことは可能ですが、それを行うくらいならば他のPOSIX向けツールを使用するほうがよっぽど楽かと思います。 さて、POSIXサブシステムに向けて移植しようとされているのは、おそらく「UNIXからの移植の場合POSIXサブシステムを利用すると楽」のような感じの記述を見られたからだと思います。 それは実は非常に古い記述で、現在ですとPOSIXサブシステムに代わる「Interixサブシステム」というものがあります。InterixサブシステムはMicrosoft Windows Services for UNIX (SFU)に含まれており、別途インストールする形になっています。 Interixサブシステムがどういうものかは 「Microsoft Windows Services for UNIX 3.0日本語版」 Interixサブシステムの導入で、UNIXとのさらに高い互換性とパフォーマンス改善を達成 http://www.atmarkit.co.jp/fwin2k/productreview/sfu30/sfu30_01.html をご覧ください。またWindows Services for UNIXについては 「Windows Services for UNIX 3.5 製品概要」 http://www.microsoft.com/japan/windows/sfu/productinfo/overview/default.asp をご覧ください。 SFUにはgcc等のツールも付属しており、またPOSIXサブシステムよりInterixサブシステムのほうがUNIXに対する互換性が高いので、UNIXからの移植であればSFUを使用してInterixサブシステムに向けて移植するほうが楽かと思います。基本的には「Windowsへの移植」というより「系統の違うUNIXへの移植」というイメージになります。 他にはCygwinという、また別のWindows向けUNIX互換(類似)環境に向けて移植する、という方法もあります。どちらが良いとは私には判断できないので、興味がありましたら調べてみてください。
補足
ありがとうございます。 POSIXサブシステム、Interixサブシステムを使用しないで検討します。
- xcrOSgS2wY
- ベストアンサー率50% (1006/1985)
そのままでいい部分はそのままにしておき、そのままでは具合の悪い部分は.NET用に書き換えればいいです。
補足
ありがとうございます。 新規作成でプロジェクトを作成し、UNIXソースを読み込めばよろしいでしょうか? C++.NETではプログラム作成でWindowsアプリ等ありますが、どれでも可能でしょうか? MSDNにUNIXからWin32への移植の説明があったのですがPOSIXサブシステムを使用して移植とありましたがPOSIXサブシステムの使い方がわかりません。 お手数おかけしますがご教授よろしくお願い致します。
補足
自作ですがどう移植すればいいのかわかりません・・・