使用#error指令、 (実行時に不一致となるかもしれないdllなどとは対照的に)。メインに今
#ifdef _RELEASE //or whatever your compiler uses
void InitialiseLibraryRelease()
{
CommonInitialise();
}
#else
void InitialiseLibraryDebug()
{
CommonInitialise();
}
#endif
:
は、最も簡単な方法は、ライブラリのCPPファイルに
#ifdef _RELEASE //or whatever your compiler uses
#define InitialiseLibrary InitialiseLibraryRelease
#else
#define InitialiseLibrary InitialiseLibraryDebug
#endif
同様に、あなたの.hファイル内の構造物のこの種を持っているように思えますライブラリを使用しているexe:
InitialiseLibrary();
ライブラリのリリースとexe don tがリンクに一致すると1つまたは他のInitialiseLibrary ...関数と一致しないことを報告します。
別の方法として、リリースライブラリとデバッグライブラリを異なる名前のファイルにコンパイルし、.hファイルで(プロジェクトにライブラリを明示的に含めるのではなく)#pragmaを使用して動作するようにすることができます。 上記の#ifdefを使用すると、#pragmaを使用するかどうかを選択してリンクするライブラリをコンパイル時に選択できます。この2番目のテクニックは、あなたの質問に正確には言及していません(プログラマーが強制しようとするとリンクを止めないので)が、この種の難しさに対処する通常の方法です(複雑なビルド環境では利点があります)
出典
2011-01-31 12:05:45
Kos
-1質問者はライブラリとMATCHの実行可能ファイルを望んでいます。彼はコンパイルされたリリースを望んでいません。 – Elemental
@Elemental: "ユーザーがリリース実行ファイルを作成した場合など" - プリプロセッサの魔法が絵の外に出ていない! – Christoph