2016-09-28 5 views
-2

私は、プログラム単位と複数のモジュール単位からなる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) 

をより多くの変更が、私はコンパイル作業をするために作るべきか?

+0

コードを移植する前に、両方の言語を習得する必要があります。それはあなたの次のステップです。 –

+0

$ linkはソースファイルではないオブジェクトファイル用です –

+0

宣言セクション(インタフェースまたは実装)の形式がないため、表示されるモジュールは標準構文(TPやISO/Extended Pascal)ではありません。私は太陽のマニュアルをチェックして、その構文のようですが、使用上の原則の前に基本的なパスカルの宣言に違反しているので、これは他のものによってサポートされません。 –

答えて

1

David Heffernanは自分のコメントに書いたとおり、あなたは言語を学ぶべきですが、ここでは、あなたを始めようとしています。

モジュールに相当するFreePascalはユニットです。メインプログラムはユニットではなく、プログラム(メインプロジェクトファイル)です。以下のよう

program myprogram; // (output) is not required. 

uses 
    module_unit; 

begin 
    say_hello 
end. 

とあなたのmodule_unit:だからあなたのプログラムが見えるよう

unit module_unit; 

{$mode objfpc}{$H+} 

interface 

procedure say_hello; 

implementation 

procedure say_hello; 
begin 
    Writeln('Hello, world.') 
end; 

end. 

今だけmyprogramプロジェクトにmodule_unitを追加して構築します。その後、コンソール/シェルからプログラムを実行できます。コンパイル先のディレクトリに移動し(cdを使用)、LinuxまたはOS Xの場合は./myprogramを入力するか、Windowsの場合はmyprogramまたはmyprogram.exeと入力します。

FWIWでは、コマンドラインの代わりにLazarus IDEを使用することをお勧めします。それは、ユニットの追加、プログラムの編集、その他の多くの作業を非常に簡単にします。

関連する問題