Я в Visual Studio 2003. У меня есть функция в очень распространенном модуле, который требует 3 других модуля. Я хочу, чтобы только проекты, использующие новую функцию, должны были включать в себя 3 других модуля, а также те, которые не ссылаются на функцию для ссылки без ошибок «неразрешенных внешних символов». Я пробовал ссылку на уровень функции, OPT: REF и каждую настройку проекта, о которой я мог думать, но линкер всегда жалуется. Я сделал простой пример для тестирования. Любые идеи, было бы удивительным ...«неразрешенный внешний символ» для функции unreferenced
//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() вызывается в _tmain(), то, конечно, b.cpp необходимо добавить в проект.
Компонент, похоже, не применяет OPT: REF до тех пор, пока не будет уверен КАЖДОЙ функции, на которую ссылается ANYWHERE в проекте. Даже если он (b()) ссылается на функцию unreferenced (a()).
Я добавил функции шифрования/дешифрования в модуль string_utilities. Я думаю, что монолитные модули, которые делают все, не идеальны. – Cowtung
Кроме того, я согласен, что макросы условной компиляции не идеальны. – Cowtung