gdc/02


gdc

2. Phobos

gcj/02をマネてインスタンスメソッドを使ってみようとしたら、嫌でもPhobosと向き合う羽目になった。

a.d

public class Test
{
	public static void hello()
	{
		printf("Hello, World!\n");
	}
}

int main(char[][] args)
{
	Test.hello();
	return 0;
}

未定義参照

$ g++ dmain.cpp a.d
a.d:(.data+0x0): undefined reference to `__vtbl_9ClassInfo'
a.d:(.data+0x28): undefined reference to `__Class_6Object'
a.d:(.rdata+0x24): undefined reference to `__D6object6Object5printFZv'
a.d:(.rdata+0x28): undefined reference to `__D6object6Object8toStringFZAa'
a.d:(.rdata+0x2c): undefined reference to `__D6object6Object6toHashFZk'
a.d:(.rdata+0x30): undefined reference to `__D6object6Object5opCmpFC6ObjectZi'
a.d:(.rdata+0x34): undefined reference to `__D6object6Object8opEqualsFC6ObjectZi'
collect2: ld returned 1 exit status

マングリング

object.d

Phobosどうしよう

方針

  1. コンパイルしてみる。
  2. 未定義参照をPhobosから持って来て埋める。
    • 未定義参照が増えるようであればすぐに使わない部分を削る。

再度object.d

実行結果

やっとコンパイルが通った。

$ g++ dmain.cpp object.d invariant.d a.d
$ ./a
Hello, World!

Monaでの実行例

02.png

ソース: file02.zip

MENU

now: 2

リンク


最新の20件
2018-05-03 2017-09-29 2017-04-25 2017-01-10 2016-12-11 2016-10-04 2016-08-14 2016-06-05 2016-05-29 2016-04-15 2015-12-28 2013-02-25 2013-02-21 2013-02-20 2013-02-12 2013-02-11 2013-02-10
最新の20件
2010-02-01 2010-01-31 2010-01-30 2010-01-29 2010-01-16

Counter: 3706, today: 2, yesterday: 1

添付ファイル: file02.png 473件 [詳細] file02.zip 624件 [詳細] filedfilt-cygwin.diff 1059件 [詳細]

リロード   新規 編集 凍結 差分 添付 複製 改名   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS

Last-modified: 2008-03-28 (金) 15:48:00 (3794d);  Modified by mona
PukiWiki 1.4.6 Copyright © 2001-2005 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-ji
Powered by PHP 5.2.17
HTML convert time to 0.046 sec.