Я работаю в 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()
{
}
Мне нужно, чтобы проект компилировался нормально только с main.cpp и a.cpp в проекте, если a () никогда не вызывается. Если a () вызывается в _tmain (), тогда, конечно, в проект необходимо добавить b.cpp.
Компоновщик, похоже, не применяет OPT: REF до тех пор, пока не будет уверен, что КАЖДАЯ функция, на которую ссылаются ВЕЗДЕ, присутствует в проекте. Даже если на него (b ()) есть ссылка в функции, на которую нет ссылки (a ()).