私は、プログラム単位と複数のモジュール単位からなるSun Pascalで書かれたプログラムを持っています。今はFree Pascalに変換したいと思います。 は、だから私は日パスカル3.0.2ユーザーズガイド(頁52、https://docs.oracle.com/cd/E19957-01/801-5054/801-5054.pdf)の例をテストすることによって開始しました:Sun PascalのモジュールをFree Pascalで同等のものにコンパイルするには?
プログラム単位:
program program_unit (output);
procedure say_hello; extern;
begin
say_hello
end.
モジュール単位:
module module_unit;
procedure say_hello;
begin
writeln ('Hello, world.')
end;
私が作りましたソースファイルのいくつかの変更:program_unitに "{$ link program_unit.p}"行を追加し、修飾子 "extern"を "external"に変更しました。
のFPC program_unit.p
を、それは失敗しました::
は、それから私は、FPCを使用してそれをコンパイルしようとした
Free Pascal Compiler version 2.6.2-8 [2014/01/22] for x86_64
Copyright (c) 1993-2012 by Florian Klaempfl and others
Target OS: Linux for x86-64
Compiling program_unit.p
Linking program_unit
/usr/bin/ld.bfd: warning: link.res contains output sections; did you forget -T?
module_unit.p: file not recognized: File format not recognized
program_unit.p(6,1) Error: Error while linking
program_unit.p(6,1) Fatal: There were 1 errors compiling module, stopping
Fatal: Compilation aborted
Error: /usr/bin/ppcx64 returned an error exitcode (normal if you did not specify a source file to be compiled)
をより多くの変更が、私はコンパイル作業をするために作るべきか?
コードを移植する前に、両方の言語を習得する必要があります。それはあなたの次のステップです。 –
$ linkはソースファイルではないオブジェクトファイル用です –
宣言セクション(インタフェースまたは実装)の形式がないため、表示されるモジュールは標準構文(TPやISO/Extended Pascal)ではありません。私は太陽のマニュアルをチェックして、その構文のようですが、使用上の原則の前に基本的なパスカルの宣言に違反しているので、これは他のものによってサポートされません。 –