error LNKすでに motor2.obj で定義されています を解消するには?

解決


はんにゃ  2011-01-24 15:14:55  No: 72217  IP: [192.*.*.*]

以前に取った杵柄をこの歳になり  記憶の薄れたなかで動かそうとしています。
環境はVC6.0で、XP-SP3です。今ホルダー内に
gai_i.dswがあります。それと幾つかの実行ファイルのソースがあります。
その中のlend3c.cをコンパイルして、実行ファイルを作りたいです。
コンパイルはエラーなしですが、ビルドをすると
lend3c.obj : error LNK2005: _g_print はすでに motor2.obj で定義されています  同様エラーがたくさんでます。
確かに  debug内に中間ファイルmotor2.objなどがたくさんあります。
それらは  他の実行ファイルの名称がついているので  それを今必要としていないので消しても良いのかとおもうのですが  助言をお願いします。
それと  実行ファイルの名前をlend3にしたいので  今のdswをlemd3と変更したいのですが  どのようにしたらよいでしょうか?

編集 削除
仲澤@失業者  2011-01-24 15:28:54  No: 72218  IP: [192.*.*.*]

おそらく、_g_print(又はg_print)変数、又は関数が、いずれかの
ヘッダーに定義されていて、そのヘッダーをlend3c.cおよびmotor2.c、
ないしその他の*.cで、各々インクルードしているのではないでしょうか。
それらの全てのインスタンスが *.objに同名で生成されているため、
当該のリンクエラーが発生するのだと思います。

さて、

>その中のlend3c.cをコンパイルして、実行ファイルを作りたいです。

とのとこですが、当該のソースには実行ファイルとして必要な
エントリーポイント(一般にはmain()関数又はWinMain()関数等)
が、実装されていますでしょうか。かつ、必要な全ての関数が
当該のソースに実装されているでしょうか。その場合、他の
ソースを単位コンパイルしたオブジェクトファイル(*.obj)を
リンクする必要はありません。

そうでない場合は、必要な関数が実装されたソースコードを
単位コンパイルしたオブジェクトファイルをリンクする必要が
あります。さらに、実行モジュールのプラットフォームにより他の
標準ヘッダー又は、WindowsSDKの提供するライブラリ、MFCを
使用している場合はそのバージョンのライブラリをリンクする必要が
あります。

編集 削除
はんにゃ  2011-01-24 17:59:16  No: 72219  IP: [192.*.*.*]

ありがとうございました
そちらの意見を参考にして
1:projectの中のソースファイルを必要外(と思われるのを切り取りし、同時にDebug内のエラーをきたすObjファイルをのぞきました  すると一応  無事にBuildが出来、実行ファイルが出来、動きます。これ課題は解決とします。
main()はもとのソースにありました

また  よろしく  おねがいします

編集 削除
はんにゃ  2011-01-24 18:04:33  No: 72220  IP: [192.*.*.*]

すみません
解決の文字を入れる方法が分からすここでおしえてください
また*は何の意味でしょう

編集 削除
はんにゃ  2011-01-24 18:04:34  No: 72221  IP: [192.*.*.*]

すみません
解決の文字を入れる方法が分からすここでおしえてください
また*は何の意味でしょう

編集 削除
はんにゃ  2011-01-24 18:04:36  No: 72222  IP: [192.*.*.*]

すみません
解決の文字を入れる方法が分からすここでおしえてください
また*は何の意味でしょう

編集 削除
瀬戸っぷ  2011-01-25 08:56:48  No: 72223  IP: [192.*.*.*]

なぜ3つも書かれているのか不明ですが……

>解決の文字を入れる方法が分からすここでおしえてください

「追加発言(4ヶ月以上古い記事に書き込めません。)」
とかのフォームの箇所
というかこの文章を入力するテキストボックスの上に
「□←解決時は質問者本人がここをチェックしてください。」
というチェックボックスがあります。
ここにチェックして、お礼なり実行結果なり記入して投稿すれば解決済みになるでしょう。

>また*は何の意味でしょう

仲澤@失業者さんの書かれた「*.c」や「*.obj」のことであれば、ワイルドカードです。
「*.c」ならば「拡張子がcのファイルすべて」ですし、「*.obj」ならば「拡張子がobjのファイルすべて」です。
「ワイルドカード」辺りで検索すれば出てくるかと思いますが…
# DOSとか使ったことはないのでしょうか?

編集 削除
はんにゃ  2011-01-25 17:50:45  No: 72224  IP: [192.*.*.*]

ありがとうございました
解決表示の件  わかりました。
*の件、スレッドリストの左の*印でした。
これも上に書いてありました
お騒がせしました

編集 削除