我在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进行编译。如果在_tmain()中调用a(),那么当然必须将b.cpp添加到项目中。
链接器似乎没有应用OPT:REF,直到它确定每个函数引用ANYWHERE在项目中。即使它(b())在未引用的函数(a())中被引用。
答案 0 :(得分:1)
您是否考虑过创建一个可选函数库,它是三个依赖项?
答案 1 :(得分:0)
在#ifdef
附近查找#define
d b()
d {{1}}旁边的可疑a()调用的声音很有希望。
答案 2 :(得分:0)
我在一个非常常见的模块中有一个功能,需要3个其他模块。我只希望使用新函数的项目必须包含其他3个模块,以及那些没有引用函数链接而没有“未解析的外部符号”错误的模块。
听起来你应该把这个新功能分成不同的模块。 (不要将它放在通用模块中)。这样,任何需要它的人都可以包括它,不管是谁,都不会。否则,你会遇到某些条件编译宏,这只会导致麻烦。