私はビルドシステムとしてCMakeを使用する共有ライブラリを持っています。 Linuxマシン上でGCCを使って正常にコンパイルされます。今、私は窓でコンパイルしようとしています。 MSVCは指定されるまでシンボルをエクスポートしません。私は__declspec(dllexport)
を知っています。しかし、CMake wikiで提供されている例は混乱しています。次のコードを考慮してください。DLLのコンパイル時にシンボルをエクスポートする - MSVC
#if defined (_WIN32)
#if defined(MyLibrary_EXPORTS)
#define MYLIB_EXPORT __declspec(dllexport)
#else
#define MYLIB_EXPORT __declspec(dllimport)
#endif /* MyLibrary_EXPORTS */
#else /* defined (_WIN32) */
#define MYLIB_EXPORT
#endif
私は__declspec(dllexport)
を理解しますが__declspec(dllimport)
が使用されている理由を不思議?どのように私はこれを使用するのですか?それはMYLIB_EXPORT void function()
のようですか?
私はfoo()
という名前のC関数を持っているとします。これは内部的にいくつかのstatic
関数を使用します。エクスポートするときに、静的関数もエクスポートする必要がありますか?それとも、APIの一部であるエントリ関数だけをエクスポートするだけで十分ですか?
ご協力いただければ幸いです。
ありがとうございました –