authority-destination tired
tired
tired
tired

投稿者 スレッド: AlephOne@本家コンパイルスレ  (参照数 11920 回)

0 メンバーさんと、1 ゲストさんが、このスレッドを見ています。

オフライン HogePiyo

  • モデレーター
  • 常連メンバー
  • ***
  • 投稿: 113
  • hogehoge
    • Durandal-Another
AlephOne@本家コンパイルスレ
« 投稿日:: 2007年03月28日 00時18分22秒 »
AlephOne@SourceForge(本家)を対象として、

・VC8などでコンパイルできるプロジェクトの作成
・日本語化

を行っていこうと考えています。

 O0追記
CVSからゲットしたのは2007年3月27日です。
ちなみにHogePiyoはコミットできる権限は持ってません。
« 最終編集: 2007年03月31日 01時48分39秒 by HogePiyo »

オフライン HogePiyo

  • モデレーター
  • 常連メンバー
  • ***
  • 投稿: 113
  • hogehoge
    • Durandal-Another
Re:AlephOne@本家コンパイルスレ
« Reply #1 投稿日:: 2007年03月28日 00時21分52秒 »
「AlephOneコンパイルスレ」との区別として、

・AlephOne CVS@本家 のみを対象とすること

を挙げます。

このスレではSourceForge.jp版と同様、行った手順や留意点などを記録していこうと考えています。

オフライン HogePiyo

  • モデレーター
  • 常連メンバー
  • ***
  • 投稿: 113
  • hogehoge
    • Durandal-Another
Re:AlephOne@本家コンパイルスレ
« Reply #2 投稿日:: 2007年03月28日 01時04分22秒 »
 :Dコード修正
○__value@Files/AStream.h
引用
v:\cvs_\cvs_sf\aleph20070327\source_files\files\astream.h(133) : error C4980: '__value' : このキーワードを使用するには、/clr:oldSyntax コマンド ライン オプションが必要です
相変わらず文句言われます。

変なオプション
引用
/clr:oldSyntax
をつけても、
引用
エラー   1   コマンド ライン error D8016 : コマンド ライン オプション '/RTC1' と '/clr:oldsyntax' は同時に指定できません   cl
と起こられてドツボにはまります。

_valueなどに変換します。

オフライン HogePiyo

  • モデレーター
  • 常連メンバー
  • ***
  • 投稿: 113
  • hogehoge
    • Durandal-Another
Re:AlephOne@本家コンパイルスレ
« Reply #3 投稿日:: 2007年03月28日 01時15分50秒 »
 :Dコード修正
○auto_ptr@Sound/SoundFile.h
引用
v:\cvs_\cvs_sf\aleph20070327\source_files\sound\soundfile.h(128) : error C2039: 'auto_ptr' : 'stlp_std' のメンバではありません。
auto_ptrはC++標準の自動解放機能付きポインターなのだが、そもそもSoundFile.hがどこからもincludeされていないもちろんプロジェクトにも含まれていない。

 O0訂正
 なんだか、ソース体系ががらりと変わっており、今までCっぽいプログラムだったのが、オブジェクト指向をガンガン使ったC++っぽい構成になってきているようです。
そのため、プロジェクトとソース構成が微妙に違ってるみたい。
 怪しいcppは全てつっこめばよいようですが、よくわからないので、エラーにあわせて追加していきます。


つまり全く使われていないところでエラーが出ているので、
引用
   std::auto_ptr<OpenedFile> opened_sound_file;
をコメントアウトする
 O0訂正
実は使うという罠!auto_ptrにはベクタに突っ込めないなど、いくつか問題点があるので、boost::shared_ptrを使うといいらしいです。

ということで
引用
#include "boost/shread_ptr.hpp"
~中略~
boost::shread_ptr<OpenedFile> opened_sound_file;
とすればいいんじゃないでしょうか…
« 最終編集: 2007年03月31日 01時20分08秒 by HogePiyo »

オフライン HogePiyo

  • モデレーター
  • 常連メンバー
  • ***
  • 投稿: 113
  • hogehoge
    • Durandal-Another
Re:AlephOne@本家コンパイルスレ
« Reply #4 投稿日:: 2007年03月28日 01時25分35秒 »
 ;Dコード追加
SDLのヘッダーが必要だが、チェックアウトした状態では入っていない。
aleph/SDL/SDL.h
となるように配置すること

同様にboostも必要。
引用
v:\cvs_\cvs_sf\aleph20070327\source_files\misc\console.h(28) : fatal error C1083: include ファイルを開けません。'boost/function.hpp': No such file or directory
aleph/Source_Files/boost/function.hppとなるように配置(外部へパスを通してもビルドできるが、一般性が失われる)

STLportも必要だが、少し特殊っぽいので保留

それにしてもstlportはVC標準のSTLにかぶさったり邪魔したりでなんともこまったちゃんだ…。boost並にすみわけができてると良いのだが。

オフライン HogePiyo

  • モデレーター
  • 常連メンバー
  • ***
  • 投稿: 113
  • hogehoge
    • Durandal-Another
Re:AlephOne@本家コンパイルスレ
« Reply #5 投稿日:: 2007年03月28日 01時30分25秒 »
 :Dコード修正
○TextLayoutHelper@…
引用
c:\documents and settings\koji\my documents\visual studio 2005\usr\local\lib\stlport-5.1.0\stlport\stl\type_traits.h(249) : error C2139: 'TextLayoutHelper::ReservationEnd' : 定義されていないクラスは、コンパイラの組み込み型の特徴である '__has_trivial_constructor' への引数として使用できません
STLportがどうのといっているが、STLportは全く関係ない
クラスの中で構造体やクラスの仮宣言はできのではないかと考える。

RenderOther/TextLayoutHelper.hを開き53行以降
引用
protected:
    struct ReservationEnd;
    struct Reservation;
   
    typedef vector<ReservationEnd>   CollectionOfReservationEnds;
   
    CollectionOfReservationEnds      mReservationEnds;
};

struct TextLayoutHelper::ReservationEnd {
    int               mHorizontalCoordinate;
    TextLayoutHelper::Reservation*   mReservation;
    bool            mStartOfReservation;
};

struct TextLayoutHelper::Reservation {
    int      mBottom;
    int      mTop;
};

引用
protected:
    struct Reservation {
        int      mBottom;
        int      mTop;
    };
    struct ReservationEnd {
        int               mHorizontalCoordinate;
        Reservation*   mReservation;
        bool            mStartOfReservation;
    };
   
    typedef vector<ReservationEnd>   CollectionOfReservationEnds;
   
    CollectionOfReservationEnds      mReservationEnds;
};
に変更(Wikiにも以前書いた)
« 最終編集: 2007年03月28日 02時03分47秒 by HogePiyo »

オフライン HogePiyo

  • モデレーター
  • 常連メンバー
  • ***
  • 投稿: 113
  • hogehoge
    • Durandal-Another
Re:AlephOne@本家コンパイルスレ
« Reply #6 投稿日:: 2007年03月28日 01時32分58秒 »
 :Dコード修正
○return@XML/XML_LevelScript.cpp
引用
v:\cvs_\cvs_sf\aleph20070327\source_files\xml\xml_levelscript.cpp(481) : error C4716: 'XML_LSCommandParser::Start' : 値を返さなければいけません
XML/XML_LevelScript.cppを見ると
引用
bool XML_LSCommandParser::Start()
{
   ObjectWasFound = false;
   Color_SetArray(Cmd.Colors, 2);
}
であり、確かに何も帰っていない。
VCではエラーになるらしい。
引用
bool XML_LSCommandParser::Start()
{
   ObjectWasFound = false;
   Color_SetArray(Cmd.Colors, 2);
    return true;
}
として、適当にtrueを返すようにした

オフライン HogePiyo

  • モデレーター
  • 常連メンバー
  • ***
  • 投稿: 113
  • hogehoge
    • Durandal-Another
Re:AlephOne@本家コンパイルスレ
« Reply #7 投稿日:: 2007年03月28日 01時44分34秒 »
 :Dコード修正
引用
v:\cvs_\cvs_sf\aleph20070327\source_files\misc\sdl_dialogs.h(46) : fatal error C1083: include ファイルを開けません。'sdl_cseries.h': No such file or directory
とりあえず、チェックアウトしたCSeries/以下にはなかった。
また、CVSをHttpアクセスでチェックしたが、そこにもなかった(aleph/Source_Files/CSeries/)

該当するMisc/sdl_dialogs.hをチェックしたが、はずしちゃってもいいんだと逆に考えることにした。46行目を
引用
//#include "sdl_cseries.h"
としたところ特に問題ないようである。

 ;)プロジェクト修正
Headeres/sdl_cseries.hは一応除外=「はい」にした。
« 最終編集: 2007年03月28日 01時59分48秒 by HogePiyo »

オフライン HogePiyo

  • モデレーター
  • 常連メンバー
  • ***
  • 投稿: 113
  • hogehoge
    • Durandal-Another
Re:AlephOne@本家コンパイルスレ
« Reply #8 投稿日:: 2007年03月28日 01時58分22秒 »
 :Dコード修正
○gl.h問題@RenderMain,RenderOtherなど
引用
c:\program files\microsoft platform sdk\include\gl\gl.h(1152) : error C2144: 構文エラー : 'void' は ';' によって先行されなければなりません。
を始めとして大量に出る。
出てくる元を見ると、
引用
(c:\program files\microsoft platform sdk\include\gl\gl.h)
WINGDIAPI void APIENTRY glAccum (GLenum op, GLfloat value);
とあり、明らかにgl*WinAPI問題である。
gl*WinAPI問題は、標準のWinAPIとgl.hの間で衝突が起こるという問題
解決策は全ての#include<GL/gl.h>の前に#include<windows.h>を設置することである。
とりあえず<GL/gl.h>が単独であるファイルは
-ModelView/Model3D.h
-RenderMain/OGL_Model_Def.h
-RenderMain/OGL_Win32.h
-RenderOther/FontHandler.h
-RenderMain/OGL_Faders.cpp
-RenderOther/HUDRenderer_OGL.cpp
-RenderOther/OverheadMap_OGL.cpp
-shell.cpp
であったため、とりあえず全ての前に#include <windows.h>を設置した。
一部は書かなくても良かったかもしれないが不明。
また、
-RenderMain/OGL_Model_Def.f
-RenderOther/FontHandler.h
-RenderOther/HUDRenderer_OGL.cpp
-RenderOther/OverheadMap_OGL.cpp
-shell.cpp

引用
#ifdef WIN32
#  include <windows.h>
#endif
と書いた。

オフライン Logue

  • 管理人
  • 古参メンバー
  • *****
  • 投稿: 595
  • 性別: 男性
    • Epilogue/LogueWiki
Re:AlephOne@本家コンパイルスレ
« Reply #9 投稿日:: 2007年03月29日 22時39分57秒 »
解析、ご苦労様です。
しかし、A1開発者はなんでここまで難読なソースにしてしまったんだろうか?謎ですねぇ。
Logue◆grDYeooZwg a.k.a. 高山 ローグ

オフライン HogePiyo

  • モデレーター
  • 常連メンバー
  • ***
  • 投稿: 113
  • hogehoge
    • Durandal-Another
Re:AlephOne@本家コンパイルスレ
« Reply #10 投稿日:: 2007年03月31日 01時29分28秒 »
解析、ご苦労様です。
しかし、A1開発者はなんでここまで難読なソースにしてしまったんだろうか?謎ですねぇ。

ども~ :D
C言語っぽい記述のときはほんと意味不明でしたが、オブジェクト指向っぽくなってきているので改善されてくるかと思われます。
Win版がリリースされていることから、普通に動くようにできるんでしょうが、安定版のプロジェクトファイルを作るのが追いついてないみたいですね

オフライン HogePiyo

  • モデレーター
  • 常連メンバー
  • ***
  • 投稿: 113
  • hogehoge
    • Durandal-Another
Re:AlephOne@本家コンパイルスレ
« Reply #11 投稿日:: 2007年03月31日 01時35分53秒 »
 ;Dプロジェクト修正
引用
*.libが読み込めない
別にライブラリのあるディレクトリが設定されていれば、普通に入力させればいいわけで。

引用
dsound.lib glu32.lib opengl32.lib sdl.lib sdl_image.lib sdl_net.lib sdlmain.lib wsock32.lib strmiids.lib
をプロジェクトプロパティ→構成→リンク→入力→ライブラリに入力します。プロジェクトでファイル一覧になってるやつを書けばOK。gluはgIuじゃないので注意

オフライン HogePiyo

  • モデレーター
  • 常連メンバー
  • ***
  • 投稿: 113
  • hogehoge
    • Durandal-Another
Re:AlephOne@本家コンパイルスレ
« Reply #12 投稿日:: 2007年03月31日 01時41分47秒 »
 :Dコード修正
引用
v:\cvs_\cvs_sf\aleph20070327\source_files\network\metaserver\metaserver_dialogs.cpp(158) : error C3861: 'snprintf': 識別子が見つかりませんでした
v:\cvs_\cvs_sf\aleph20070327\source_files\network\network_dialogs.cpp(713) : error C3861: 'snprintf': 識別子が見つかりませんでした


引用
#include "snprintf.h"
とすればOK

それにしてもどんだけ修正すればいいんだ?

オフライン HogePiyo

  • モデレーター
  • 常連メンバー
  • ***
  • 投稿: 113
  • hogehoge
    • Durandal-Another
Re:AlephOne@本家コンパイルスレ
« Reply #13 投稿日:: 2007年03月31日 01時46分17秒 »
一杯たまってきたのでまとめて表記

 ;D
引用
v:\cvs_\cvs_sf\aleph20070327\source_files\network\network.cpp(162) : fatal error C1083: include ファイルを開けません。'libnat.h': No such file or directory

LibNATが含まれていない
プロジェクトのインクルードディレクトリリストに
コード: [Select]
$(ProjectDir)\Source_Files\LibNATを追加
プロジェクトに
コード: [Select]
os_unix.c以外の*.cを追加
 :D
引用
v:\cvs_\cvs_sf\aleph20070327\source_files\libnat\upnp.c(157) : error C2059: 構文エラー : '文字列'

\の次の改行を消す。
Macファイル形式なのが問題

 :D
引用
v:\cvs_\cvs_sf\aleph20070327\source_files\rendermain\imageloader.h(177) : error C4716: 'copy_on_edit<ImageDescriptor>::edit' : 値を返さなければいけません

多分コピー元を返すと思うので
コード: [Select]
T* edit(T* copy) {
if (_copy) {
delete _copy;
}
_original = NULL;
_copy = copy;
        return copy;
}
とした

 :D
引用
v:\cvs_\cvs_sf\aleph20070327\source_files\files\filehandler_sdl.cpp(389) : error C3861: 'S_ISDIR': 識別子が見つかりませんでした

Win32だとその定義がないらしい

コード: [Select]
#define S_ISDIR(file_Mode)  ((file_Mode&S_IFDIR) == S_IFDIR)を、この識別子の前に設置

 ;D
Sound/mysound.cppは存在しない

 ;)
引用
v:\cvs_\cvs_sf\aleph20070327\source_files\files\filehandler_sdl.cpp(411) : error C3861: 'strcasecmp': 識別子が見つかりませんでした

strcasecmp strncasecmpという関数が必要。UNIXには標準でありますが、Win32にはないのでGetしてね

 :D
引用
c:\program files\microsoft visual studio 8\vc\include\stdio.h(333) : error C2375: 'vsnprintf' : 再定義されています。異なるリンケージです。
v:\cvs_\cvs_sf\aleph20070327\source_files\cseries\snprintf.cpp(39) : error C3861: 'vsnprintf': 識別子が見つかりませんでした

CSeries/snprintf.hに、
コード: [Select]
#define HAVE_VSNPRINTF
を追加

オフライン HogePiyo

  • モデレーター
  • 常連メンバー
  • ***
  • 投稿: 113
  • hogehoge
    • Durandal-Another
Re:AlephOne@本家コンパイルスレ
« Reply #14 投稿日:: 2007年03月31日 05時04分10秒 »
次でーす

 :D
引用
エラー   3   error LNK2001: 外部シンボル ""char * __cdecl getcstr(char *,short,unsigned int)" (?getcstr@@YAPADPADFI@Z)" は未解決です。   network_games.obj

CSeries/ccstrings.cppをプロジェクトで有効にする

 :D
引用
エラー   863   error LNK2005: "private: static int const OGL_Blitter::tile_size" (?tile_size@OGL_Blitter@@0HB) は既に OGL_Setup.obj で定義されています。   OGL_Blitter.obj
VC8ではこれはエラーになるようです。
コード: [Select]
#ifdef __MVCPP__
const int OGL_Blitter::tile_size;
#endif

 :D
引用
エラー   866   error LNK2019: 未解決の外部シンボル "public: void __thiscall OpenGLDialog::OpenGLPrefsByRunning(void)" (?OpenGLPrefsByRunning@OpenGLDialog@@QAEXXZ) が関数 "void __cdecl rendering_options_dialog_demux(void *)" (?rendering_options_dialog_demux@@YAXPAX@Z) で参照されました。   preferences.obj

Misc/preference_dialogs.cpp をプロジェクトに追加。
リンクエラーは全てプロジェクト追加で解決


引用
エラー   869   error LNK2001: 外部シンボル ""protected: virtual void __thiscall ClientInfoMessage::reallyDeflateTo(class AOStream &)const " (?reallyDeflateTo@ClientInfoMessage@@MBEXAAVAOStream@@@Z)" は未解決です。   network.obj
とか

Network/network_messages.cpp


引用
エラー   910   error LNK2019: 未解決の外部シンボル "class XML_ElementParser * __cdecl SW_Texture_Extras_GetParser(void)" (?SW_Texture_Extras_GetParser@@YAPAVXML_ElementParser@@XZ) が関数 "void __cdecl SetupParseTree(void)" (?SetupParseTree@@YAXXZ) で参照されました。   XML_MakeRoot.obj

RenderMain/SW_Texture_Extras.cpp

 :D
引用
エラー   883   error LNK2019: 未解決の外部シンボル "int __cdecl strcasecmp(char const *,char const *)" (?strcasecmp@@YAHPBD0@Z) が関数 "public: enum Typecode __thiscall FileSpecifier::GetType(void)" (?GetType@FileSpecifier@@QAE?AW4Typecode@@XZ) で参照されました。   FileHandler_SDL.obj
VC8ではconst char* への引渡しはできない模様
コード: [Select]
char *extension = (char*)strrchr(GetPath(), '.');
if (extension) {
if (strcasecmp(extension, ".sce2") == 0 ||