私はVisual C++ 2010のプロジェクトを持っています。このプロジェクトには、キーヘッダーファイルにプリプロセッサディレクティブが含まれています。実際、ZMQのソースコードです。DLLを静的ライブラリにコンパイルするときに、DLL_EXPORTをどうやって処理できますか?
プロジェクトは通常dllに設定されているため、ヘッダはDLL_EXPORTのステータス(定義済み/未定義)を使用します。プロジェクトは、DLLをコンパイルするために使用されている場合は、ヘッダーがDLLプロジェクトやクライアントコードの両方で使用することができ、zmq.hから取った次のセットアップのおかげ:
#if defined _WIN32
# if defined DLL_EXPORT
# define ZMQ_EXPORT __declspec(dllexport)
# else
# define ZMQ_EXPORT __declspec(dllimport)
# endif
はしかし、これはサポートしていません。私はスタティックライブラリを構築しています。したがって、手作業でヘッダーに変更する必要があります。 Visual Studioはdllプロジェクトのセットアップを認識し、それに応じてdll_exportの定義を処理するようです。ビジュアルスタジオで認識されているシンボルはありますか?スタティックライブラリの設定に対応していますか?基本的には、上記のスニペットで使用されているメソッドを拡張して静的ライブラリのコンパイルと使用法を扱いたいと思います。
私はそれが助けになるとは思わない。 Visual Studioでは、 '_declspec(dllimport)'(MSVC * .DLLへのリンク用)と空白(静的CRTへのリンク用)を切り替えるだけで済みます。 – Neil