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

解決


nao  2006-12-04 23:55:53  No: 63802

「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-05 01:22:41  No: 63803

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

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

#elif _USERDLL
// DLLmain()

#endif


自信ないので匿名で  2006-12-05 02:16:43  No: 63804

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

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


nao  2006-12-05 20:04:29  No: 63805

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

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


nao  2006-12-05 20:16:28  No: 63806

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


keichan  2006-12-05 23:02:52  No: 63807

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


nao  2006-12-07 01:45:12  No: 63808

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加