サイトトップへ
OSASK.NET
  サイトトップへ       新掲示板(閉鎖済)   Wiki(凍結済)   旧掲示板(廃止済)   ニュース(廃止済)  
1: 2004-10-02 (土) 19:21:18 ソース 現: 2024-01-08 (月) 12:58:51 ゲスト ソース
Line 1: Line 1:
-//Created By Uchan+&size(9){Created By Uchan};
*Visual C++ コンパイラーをosa_dir2で使ってみた記録 *Visual C++ コンパイラーをosa_dir2で使ってみた記録
-OSASKアプリをC++で作りたくなって、GOのC++コンパイラーを使った。しかし、それがうまく動かないことが発覚し、当初Min-GWを試そうと思ったが、実はこれ、だめコンパイラーらしく、OSASKアプリを作っても例外がでて没。+OSASKアプリをC++で作りたくなって、GOのC++コンパイラーを使いました。しかし、それがうまく動かないことが発覚し、当初Min-GWを試そうと思いましたが、実はこれ、だめコンパイラーらしく、OSASKアプリを作るのは出来ませんでした。
ということで、VC++を使うことにしました。 ということで、VC++を使うことにしました。
**VC++って高くないの? **VC++って高くないの?
-まあ、買うと高いです。ウン千円です。しかし、マイクロソフトから、Visual C++ Toolkit 2003というものが配布されているのです。これは、ビジュアルな開発環境は無いものの、まさしくVC++コンパイラーとリンカーがセットになったもので、ソースファイルがあれば、Visual C++ .NETと同じバイナリが出来ます。(バージョンによる些細な違いはあるでしょうけど。)+まあ、買うと高いです。ウン千円です。 
 + 
 +しか~~し、実はマイクロソフトから、Visual C++ Toolkit 2003というものが配布されているのです。これは、ビジュアルな開発環境は無いものの、まさしくVC++コンパイラーとリンカーがセットになったもので、ソースファイルがあれば、Visual C++ .NETと同じバイナリが出来ます。(バージョンによる些細な違いはあるでしょうけど。)
今回の、「osa_dir2でコンパイルする」目的には、これで十分(というか、ビジュアルな開発環境は意味ない)なので、[[早速ダウソ:http://msdn.microsoft.com/visualc/vctoolkit2003/]]。 今回の、「osa_dir2でコンパイルする」目的には、これで十分(というか、ビジュアルな開発環境は意味ない)なので、[[早速ダウソ:http://msdn.microsoft.com/visualc/vctoolkit2003/]]。
**どうやってosa_dir2に組み込むか。 **どうやってosa_dir2に組み込むか。
これが今回の最大問題だったのです。 これが今回の最大問題だったのです。
-まず、ダウソしたVC++(以下VC++)のbinフォルダにあるファイルをすべてosa_dir2のz_toolsフォルダにコピーします。 +まず、z_tools内のcom_mak.txtの 
-そしたら、z_tools内のcom_mak.txtの + CC1      = $(TOOLPATH)cc1.exe -I$(INCPATH) $(CC1OPT) -Os -Wall -quiet
-CC1      = $(TOOLPATH)cc1.exe -I$(INCPATH) $(CC1OPT) -Os -Wall -quiet+
のしたの行に のしたの行に
-CL      = $(TOOLPATH)cl.exe -I$(INCPATH) /c+ CL      = $(VCToolKitInstallDir)bin\cl.exe -I$(INCPATH) /c
と書き足します。 と書き足します。
- %.gas : %.ca Makefile + %.ca : %.c Makefile 
-    $(CC1) -o $*.gas $*.ca+    $(SJISCONV) $*.c $*.ca
- %.gas : %.cpa Makefile + %.cpa : %.cpp Makefile 
-    $(CC1PLUS) -o $*.gas $*.cpa+    $(SJISCONV) $*.cpp $*.cpa
 (これは無い場合がある)  (これは無い場合がある)
- %.nas : %.gas Makefile +この2つ(1つの場合がある)それぞれを削除し、
-    $(GAS2NASK) $*.gas $*.nas+
 %.obj : %.nas Makefile  %.obj : %.nas Makefile
    $(NASK) $*.nas $*.obj     $(NASK) $*.nas $*.obj
- 
-この4つ(3つの場合がある)それぞれを削除し、 
- 
- %.cpa : %.cpp Makefile 
-    $(SJISCONV) $*.cpp $*.cpa 
の下の行に の下の行に
 %.obj : %.c Makefile  %.obj : %.c Makefile
Line 42: Line 37:
 %.obj : %.cpp Makefile  %.obj : %.cpp Makefile
    $(CL) $*.cpp     $(CL) $*.cpp
-を書き足します。+の2つを書き足します。
そしたらcom_mak.txtは完成です。 そしたらcom_mak.txtは完成です。
Line 63: Line 58:
削除できたら、それをvcgg00.hという名前で保存します。 削除できたら、それをvcgg00.hという名前で保存します。
-今度から、C++でアプリを書くときは、このvcgg00.hをインクルードします。+今度から、C++でアプリを書くときは、このvcgg00.hをextern "C"でインクルードします。
** **
これをやれば、みんなもVC++を使って快適にC++プログラムをコンパイルできます。 これをやれば、みんなもVC++を使って快適にC++プログラムをコンパイルできます。
 +
 +**添付ファイルの情報
 +vcosadir.sar
 +
 +VC++コンパイラでのコンパイルに対応したcom_mak.txtとvcgg00.h。CとC++プログラムがコンパイルできる。~
 +com_mak.txtはこれまでのcom_mak.txtと入れ替えて使う。(再びGOのコンパイラを使いたくなったときに、入れ替える前のcom_mak.txtが必要になるので、ちゃんとそれも取っておくこと。)
 +
 +vcgg00.hは、guigui00.hと同じフォルダにコピーする。~
 +C++アプリを作るときは、guigui00.hのかわりにvcgg00.hをインクルードするようにする。
 +
 +**追記2004.10.4
 +この設定だとライブラリが作れないなどの問題があるようです。それを解決するには、まずcl.exeにパスを通し、次に、com_mak.txtの
 + CL      = $(VCToolKitInstallDir)bin\cl.exe -I$(INCPATH) /c
 +
 + CL      = cl.exe -I$(INCPATH) -c
 +とします。これで正常動作するはず。
 +パスの通し方は[[ここ:http://www.geocities.co.jp/CollegeLife-Library/2783/index.html]]を参照
 +
 +**試行錯誤した結果ようやく実行できたはろーわーるど
 +
 +-ちなみにMLからダウンロードできるosa_dir2はcom_mak.txtのみの変更ですむようです(extern __inline__ void ... のくだりは存在せず)。
 +-VCを持ってる人は先にVCVARS32.BATを実行してからmakeするとパス等は全部面倒みてくれるようです。
 +
 + /* "helloc4.cpp":helloをC++言語で記述した例 */
 + /*  stack:4k malloc:1k */
 + 
 + /* このソースの説明が"helloc4.txt"に書かれています */
 + 
 + extern "C" {
 + #include <guigui00.h>
 + void OsaskMain();
 + }
 + 
 + #define  AUTO_MALLOC  0
 + 
 + class helloc4 {
 + public:
 +   helloc4();
 +   ~helloc4();
 + };
 + 
 + helloc4::helloc4() {
 +   struct LIB_WINDOW *window;
 +   struct LIB_TEXTBOX *wintitle, *textbox;
 + 
 +   /* ライブラリの初期化(必ず最初にやらなければならない) */
 +   lib_init(AUTO_MALLOC);
 + 
 +   /* ウィンドウのオープン */
 +   window = lib_openwindow(AUTO_MALLOC, 0x0200, 136, 48);
 + 
 +   /* ウィンドウタイトル用のテキストボックスをオープン */
 +   wintitle = lib_opentextbox(0x1000, AUTO_MALLOC, 0,  7, 1,  0,  0, window, 0x00c0, 0);
 + 
 +   /* "hello, world"を表示するためのテキストボックスをオープン */
 +   textbox  = lib_opentextbox(0x0000, AUTO_MALLOC, 0, 12, 1, 16, 16, window, 0x00c0, 0);
 + 
 +   /* ウィンドウタイトルを表示 */
 +   lib_putstring_ASCII(0x0000, 0, 0, wintitle, 0, 0, "helloc4");
 + 
 +   /* メッセージを表示 */
 +   lib_putstring_ASCII(0x0000, 0, 0, textbox,  0, 0, "hello, world");
 + 
 +   /* 終了 */
 +   lib_waitsignal(0x0001, 0, 0);
 + }
 + 
 + helloc4::~helloc4(){}
 + 
 + void OsaskMain()
 + {
 +   helloc4 hello;
 + }
*こめんと(意見・質問・間違い指摘・その他何でも。) *こめんと(意見・質問・間違い指摘・その他何でも。)
 +-introeみたいにライブラリを使おうとすると、エラーが出る。 -- ''uchan'' SIZE(10){2004-10-03 (日) 15:30:27}
 +-やっぱVC++は不便な点が多いので、GOがバージョンアップしてC++の不具合が無くなるのを期待。 -- ''uchan'' SIZE(10){2004-10-03 (日) 17:01:06}
 +-ライブラリ出来ました。VCにパスを通し、CL = cl.exe -I$(INCPATH) -c としました。 -- ''uchan'' SIZE(10){2004-10-04 (月) 07:16:28}
 +-ものぐさな人に必要な処置を施したosa_dir2改をあげておきます。http://bayside.upper.jp/upload/osasksdk-20041005.lzh -- ''bayside'' SIZE(10){2004-10-05 (火) 22:01:17}
 +-obj2bim3で"Warning : can't link ??2@YAPAXI@Z"が発生。どうもnewがリンクできていないらしい。 -- ''bayside'' SIZE(10){2004-10-06 (水) 15:17:52}
 +-つまりnew演算子用のランタイムがVCにあって、それが無いからリンクできないのでしょう。おそらくランタイムはOSに依存するので、VCのランタイムから持ってくるだけでは解決できないと思います。 -- [[K]] SIZE(10){2004-10-06 (水) 15:58:27}
 +-inline void* operator new(size_t n){ return malloc(n); } でたいていの環境でnewが使えるようになるはづ。 -- [[名無しさん]] SIZE(10){2004-10-06 (水) 17:28:47}
 +
#comment #comment

トップ   差分 バックアップ 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ
新着

目次
メンバー一覧


最新の20件
2016-10-01 2016-09-08
  • @MenuBar.
2016-09-07 2016-09-04 2016-08-15 2015-09-23 2014-07-30 2014-07-04 2014-02-04 2013-10-26 2013-06-21 2013-06-17 2013-06-15 2013-04-02 2013-02-09 2013-02-04 2012-12-25 2012-12-01 2012-05-28 2012-03-31

トピック一覧
一般用コメント最新
新掲示板lina
2016/9/5 20:58
SandBoxゲスト
2016/9/4 12:01
RecentDeletedlina
2015/6/2 19:29
Old-OSASK-MLlina
2014/6/29 9:14
hideyosi/メールhideyosi
2014/1/6 20:17
hideyosi/募集中lina
2013/11/8 19:56

このサイトは川合秀実から委託を受けて、OSASKコミュニティによって管理・運営されています。