Digital Mars C/C++ compiler

・未解決問題

>dmc -Bj -j0 hello.c

link hello,,,user32+kernel32/noi;

OPTLINK (R) for Win32 Release 8.00.16

Copyright .....

http://.....

OPTLINK : Warning 23: No Stack

OPTLINK : Warning 134: No Start Address

>hello

このバージョンの hello.exe は、実行中の Windows のバージョンと互換性がありません。…

おそらく exe の実行エラーは No Start Address か No Stack に起因するのだろう。

―――――

DMのリンカが他のコンパイラVisual Studioなど)と同じ名前の環境変数からリンクオプションを読み出していて、かつ、VSのリンカと互換性がなかったりして、正しいスタートアップ・ルーチンやライブラリがリンクされていないのかもしれない。

単に、main 関数の名前をミスっているのかもしれない。

―――――

main 関数の名前をミスった場合

下記ソースがエラーにならずに exe ファイルまでできてしまう。

さすがにリンカが警告は出す。

しかも実行もできる。実行時エラーにならない。

実行結果は正しくない。

E:\dmc>type hello2.c

 #include <stdio.h>
void Main(void){

    printf("hello world.\n");

}

 

E:\dmc>dmc -Bj -j0 hello2.c
link hello2,,,user32+kernel32/noi;
OPTLINK (R) for Win32 Release 8.00.16
Copyright (C) Digital Mars 1989-2013 All rights reserved.
http://www.digitalmars.com/ctg/optlink.html
OPTLINK : Warning 134: No Start Address


E:\dmc>hello2  おい、実行できるのか。エラーも出ない。

         さすがに正しい出力は出ない。

E:\dmc>