2011-11-14 28 views
2

私はCで小さなクライアント/サーバアプリケーションを開発しています。現時点では手作業でgccを呼び出し、独自のmakeファイルを使用していました。私は2つのmain()ファンクションを持っていました。一つはserver.c、もう一つはclient.cです。EclipseでC言語でmain()メソッドを2つ以上持つ

プロジェクトのフォルダにあるすべてのファイルをEclipseにインポートしましたが、コンパイルしようとすると、mainの定義が複数あることが警告されました。私は与えられた実行可能ファイルが単一のmain()機能を持つべきであることを理解していますが、この場合私は2としたいので、サーバとクライアントを実行することができ、ほとんどすべての他の.cファイルを共有します。

これを解決するにはどうすればよいですか?心に浮かんでいる唯一のアイデアは、これを2つ(おそらく3つ)のプロジェクトで分けることです。私はサーバーとクライアントの両方を同時に実行したいと思っています。可能であれば、Eclipse自体を通してそうしたいと思います。

おかげ

編集:

メイク:

table-client: client-lib.o 
    gcc -o tabela-client table_client.c table.c base64.c list.c client-lib.o 

table-server: 
    gcc -o tabela-server table_server.c message.c base64.c entry.c data.c table_skel.c table.c list.c 

client-lib.o: 
    gcc -c remote_table.c network_client.c message.c data.c entry.c 
    ld -r data.o entry.o message.o network_client.o remote_table.o -o client-lib.o 

clean: 
    rm -f tabela-server 
    rm -f tabela-client 
    rm -f *.o 
+0

あなたの 'Makefile'はどのように見えますか? – sarnold

+0

OPに入れてください。 –

答えて

3

はい、プロジェクトを分割する方がよいでしょう。また、3つの異なるプロジェクト(サーバー、クライアント、共通の機能のための共有ライブラリ)を作成する方がよいかもしれません。

0

特定のファイルがビルドから除外/含まれるように、あなたが設定することができます。クライアントビルドとサーバービルドをセットアップすることにより、別々のファイルとビルドに保管されている限り、複数のメインを持つことができます。

編集:Nevermind、回答Having 2 or more main() methods in C with Eclipseは保守性の観点から優れています。

1

3つのプロジェクト(サーバー、クライアント、ライブラリ内の共通コード)で分割するのは良い考えです。共通コードライブラリに依存するように、サーバープロジェクトとクライアントプロジェクトを設定します。共通コードライブラリは静的ライブラリとして作成できます。

0

私たちは実際にこのようにすることができます。私は同じ問題に直面し、次のように解決することができました:ありがとうございました!

#define my main() 
my() 

{ 

printf("hello frnz"); 

} 

私たちは、私たちが望むように多くの幹線を持つことができます。 Vola!

関連する問題