私は Visual Studio 2003 を使用しています。他の 3 つのモジュールを必要とする非常に一般的なモジュールに関数があります。新しい関数を使用するプロジェクトにのみ、他の 3 つのモジュールを含める必要があり、関数を参照しないプロジェクトは、「未解決の外部シンボル」エラーなしでリンクする必要があります。関数レベルのリンク、OPT:REF、および考えられるすべてのプロジェクト設定を試しましたが、リンカーは常に文句を言います。テスト用に簡単な例を作成しました。どんなアイデアも素晴らしいでしょう...
//main.cpp
//#include "a.h"
int _tmain(int argc, _TCHAR* argv[])
{
//a();
return 0;
}
//a.h
#include "b.h"
void a();
//a.cpp
#include "a.h"
#include "b.h"
void a()
{
b();
}
//b.h
void b();
//b.cpp
#include "b.h"
void b()
{
}
a() が呼び出されない限り、プロジェクトで main.cpp と a.cpp のみを使用して正常にコンパイルする必要があります。a() が _tmain() で呼び出された場合、もちろん b.cpp をプロジェクトに追加する必要があります。
ANYWHERE で参照されている EVERY 関数がプロジェクト内にあることを確認するまで、リンカーは OPT:REF を適用しないようです。それ (b()) が参照されていない関数 (a()) で参照されている場合でも。