1

VS2010にCコンソールプログラムがあり、単一のプロジェクトとして編集/デバッグ/ビルドしたいと思います。つまり、バニラコンソールのexeファイルであるかのように記述してデバッグしたいのですが、副産物としてdllを生成するようにします。SO(C#プロジェクトDLLとEXEの作成)に関する次の情報を見つけました

DLLプロジェクトには、再利用可能なすべてのコードが含まれている必要があります。通常のプロジェクトは、構築しているアプリケーションであり、再利用可能なDLLを参照します。このようにして、将来のプロジェクトに使用できるフレームワークをDLLプロジェクトに構築できます。

SOの他の場所で、私はこれを見つけました:https ://stackoverflow.com/questions/7054481/how-to-produce-a-mix-of-dll-and-exe-in-one-c-sharp-project

とにかくdllであるかのように.Net実行可能ファイルを参照できますが、exeファイルを同じ名前のdllファイルにコピーすることを検討できます...プロジェクトのVisualStudioビルド後イベントを使用してこのプロセスを自動化できます。これにより、ビルドが成功するたびにdllコピーの作成が処理されます。copy "$(TargetPath)" "$(TargetDir)$(TargetName).dll"

最初のオプションは、2つの異なるプロジェクトを維持することを意味するようです。2番目の投稿のアドバイスの代わりにこれを行う理由はありますか?exe全体をコピーして拡張子をexeからdllに変更するだけですか?

4

1 に答える 1

0

Hans Passant が質問に回答しましたが、コメントであるため、回答済みとしてマークできません。だからここに彼の答えがあります:

「これはマネージ言語では可能ですが、C では可能ではありません。ネイティブ DLL には異なる CRT スタートアップ コードがあります。また、ネイティブ EXE は再配置可能ではなく、エクスポートされた関数をサポートしていません。より大きな問題は、可能であれば、何をするかです」 d main() 関数に書き込みます。EXE プロジェクトの main() 関数には書き込めませんでした。単体テストは、エクスポートされた関数をテストするためだけに記述します。これは、DLL を使用するコードで利用できる唯一のものだからです。 DLL プロジェクトと EXE プロジェクトの両方でリンクできるスタティック ライブラリを作成する 3 番目のプロジェクト"

于 2012-05-08T18:33:50.720 に答える