まず手始めは「旧ボーランドBCC32.exe(Ver5.5.1)との互換性」です。

 

先に作った簡単なウィンドウプログラムでありHelloWorldをBCCDeveloperとBCC325.5でコンパイルすると当然に完了します。

ところが実行ファイルHelloWorld.exeと同じReleaseフォールダーに入っているHelloWorld.makを使って、コンパイラーをbcc32c、リソースコンパイラーをrc.exeにしてコンパイルすると、

とエラーになります。(なお、コンパイラーをbcc32、リソースコンパイラーをbrc32.exeにしてコンパイルすれば勿論成功します。)

画面ではわかりにくいので、コンパイラーのエラー出力を下に示します。

【bcc32cのエラーメッセージ】

MAKE Version 5.41  Copyright (c) 1987, 2014 Embarcadero Technologies, Inc.
    "C:\Borland\BCC102\bin\bcc32c.exe" -W -6 -O2 -w- -AT -pc -H- -k -b -I"C:\Borland\BCCForm" -o"C:\Users\ysama\Programing\Borland C++\HelloWorld\Release\HelloWorld.obj" -c "C:\Users\ysama\Programing\Borland C++\HelloWorld\HelloWorld.cpp"
Embarcadero C++ 7.30 for Win32 Copyright (c) 2012-2017 Embarcadero Technologies, Inc.
Warning: option '-6' is not supported in Clang-based compiler.
Warning: option '-H-' is not supported in Clang-based compiler.
Warning: option '-k' is not supported in Clang-based compiler.
C:\Users\ysama\Programing\Borland C++\HelloWorld\HelloWorld.cpp:

** error 1 ** deleting "C:\Users\ysama\Programing\Borland C++\HelloWorld\Release\HelloWorld.obj"

 

では、面倒くさいのでオプションを"-W"だけにしてビルドしますが、矢張りエラーとなります。また厄介なことに今度はエラーメッセージにヒントがありません。("-W"オプションに文句をつけていないことに注意してください。)

【bcc32cのエラーメッセ―ジ2】

MAKE Version 5.41  Copyright (c) 1987, 2014 Embarcadero Technologies, Inc.
    "C:\Borland\BCC102\bin\bcc32c.exe" -W -I"C:\Borland\BCCForm" -o"C:\Users\ysama\Programing\Borland C++\HelloWorld\Release\HelloWorld.obj" -c "C:\Users\ysama\Programing\Borland C++\HelloWorld\HelloWorld.cpp"
Embarcadero C++ 7.30 for Win32 Copyright (c) 2012-2017 Embarcadero Technologies, Inc.
C:\Users\ysama\Programing\Borland C++\HelloWorld\HelloWorld.cpp:

** error 1 ** deleting "C:\Users\ysama\Programing\Borland C++\HelloWorld\Release\HelloWorld.obj"

 

「何が問題なのか?」が全くわからないので、今度はBCCSkeltonを全く使わない、C++とWin32で書いたWindowTemplate.cppと簡単なメニューテンプレートMenuTeml.rcのシンプルなウィンドウプログラムを、単なるバッチファイル

C:\borland\bcc102\bin\bcc32c -W WinTemplate.cpp > bccerror.txt
C:\borland\bcc102\bin\rc MenuTempl.rc
pause

でビルドしてみます。

結果は、

C:\Users\ysama\Programing\Windows Program\WinTemplate>C:\borland\bcc102\bin\bcc32c -W WinTemplate.cpp  1>bccerror.txt
bcc32c.exe: error: linker command failed with exit code 2 (use -Xdriver -v to see invocation)
 

C:\Users\ysama\Programing\Windows Program\WinTemplate>C:\borland\bcc102\bin\rc MenuTempl.rc
Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0
Copyright (C) Microsoft Corporation.  All rights reserved.
 

C:\Users\ysama\Programing\Windows Program\WinTemplate>pause
続行するには何かキーを押してください . . .

 

とコンパイルは失敗、リソースコンパイルは成功してresファイルができています。(Microsoftだからcoffで、omfファイルではないのかな?)

またエラー出力(bccerror.txt)には、

Embarcadero C++ 7.30 for Win32 Copyright (c) 2012-2017 Embarcadero Technologies, Inc.
WinTemplate.cpp:
Turbo Incremental Link 6.91 Copyright (c) 1997-2017 Embarcadero Technologies, Inc.
Error: Unresolved external '_main' referenced from C:\BORLAND\BCC102\LIB\WIN32C\DEBUG\C0X32.OBJ
Error: Unable to perform link

 

コンソールアプリ("_main"ベース)になっており、"-W"をつかってもウィンドウアプリ("_winmain"ベース)ではなくなっています。

ということで、今度はエラー表示にある通り、" -Xdriver -v"を付け加え、"-W"を"-tW"にして、リソースコンパイラーもbrc32で試します。

C:\borland\bcc102\bin\bcc32c -tW  -Xdriver -v WinTemplate.cpp > bccerror.txt
C:\borland\bcc102\bin\brc32 -feWinTemplate.exe MenuTempl.rc
pause

結果は、やたらメッセージが出て来ましたが、

なんとか成功です。

 

結論的には、

Warning: option '-6' is not supported in Clang-based compiler.
Warning: option '-H-' is not supported in Clang-based compiler.
Warning: option '-k' is not supported in Clang-based compiler.

Error: Unresolved external '_main' referenced from C:\BORLAND\BCC102\LIB\WIN32C\DEBUG\C0X32.OBJ
という警告やエラーがでましたが、bcc32cのヘルプによれば、

Embarcadero CLANG 7.30 Copyright (c) 2012-2017 Embarcadero Technologies, Inc.
Available options (* = default setting, xxx = has sub-options: use -h -X):
(Note: -X- or -w-XXX will usually undo whatever was set or unset by -X or -wXXX.
 If two options conflict, the last one specified will be used.)
(省略)

  -6      Generate Pentium Pro instructions

(省略)

  -Hxxx   Generate and use precompiled headers

(省略)

 -W      Target is a Windows application
 (省略)

 -k      Generate standard stack frames
 とあり、「単純にbcc32c.exeのhelp表示を信じてはいけない」、また「エラーメッセージは小出しに出されるので、今出ていなくともエラーになっていることがあり得る」ということが実証できたのではないか、と思います。

 

大分疲れたので、今回はここまでにします。