コンソールアプリケーションとDLLを同じソースで作るには

解決


nao  2006-12-04 14:55:53  No: 63802  IP: [192.*.*.*]

「win32 Console Application」でexeを作成し,実行できるプログラムができると「win32 Dynamic-Link Library」でDLLにして使用しています.
このDLLに変更にする際に同じソースを使うことはできないでしょか.
ふたつの違いはmainのところだけなのですが.
やりたいこととしては,
もし「win32 Console Application」だったら「win32 Console Application」のmainを使い,「win32 Dynamic-Link Library」だったら「win32 Dynamic-Link Library」のmainを使うようにしたいです.
何かよい方法はないでしょうか.
よろしくおねがいします.

編集 削除
keichan  2006-12-04 16:22:41  No: 63803  IP: [192.*.*.*]

プリプロセッサで分ける。というのはダメですか?

#ifdef _CONSOLE
// コンソールmain()

#elif _USERDLL
// DLLmain()

#endif

編集 削除
自信ないので匿名で  2006-12-04 17:16:43  No: 63804  IP: [192.*.*.*]

Console App用とDLL用のプロジェクトをそれぞれ作って
mainのところだけ分けてリンクすればいけそうな気がします。

#VC6なら、↑で作った2つのプロジェクトをワークスペースに
#追加すれば同時に管理できるかも(やったことありません)。
#-> プロジェクト ->プロジェクトをワークスペースに挿入
#-> ビルド->バッチビルド で

編集 削除
nao  2006-12-05 11:04:29  No: 63805  IP: [192.*.*.*]

keichanさんのやり方ですると_USERDLLが定義されていない識別子のようです.
今のところはかわりにelseを使っています.
_CONSOLEの中身は1のようです.
DLLを使うときは-1を表す識別子を使うとできるような気がします.
-1を表す識別子はあるのでしょか.

17:16:43に書き込んでいただいた方のやりかたでやりたいのですが,やり方がわかりませんでした.
もし分かるのなら,詳しく教えていただけると助かります.
よろしくおねがいします.

編集 削除
nao  2006-12-05 11:16:28  No: 63806  IP: [192.*.*.*]

DLLを使うときは_USRDLLでした.
keichanさん,ありがとうございました.

編集 削除
keichan  2006-12-05 14:02:52  No: 63807  IP: [192.*.*.*]

あ・・・TYPO・・・
指摘されるまで気付きませんでした^^;
失礼しました。

編集 削除
nao  2006-12-06 16:45:12  No: 63808  IP: [192.*.*.*]

コンソールのときは「_CONSOLE」
DLLのときは「_USERDLL」
で区別できました.
ありがとうございました.

編集 削除