我有一个 VS10 解决方案,其中包含 2 个具有相同名称的功能的项目。链接器抱怨(抛出警告)关于第二个定义(同名的两个函数)被忽略:
warning LNK4006: "void __cdecl function_name(short *,class Bbox *,int,int,struct FILE_NAMES *,unsigned char *)" (?function_name@@YAXPAFPAVBbox@@HHPAUFILE_NAMES@@PAE@Z) already defined in XXX.lib(segment.obj); second definition ignored
这会导致对第二个项目(被忽略的)函数的调用指向第一个项目的函数(因为定义被忽略)。
我的问题是:除了重命名两个项目中具有相同名称的所有函数之外,还有什么方法可以避免/解决这个问题?例如,通过将#if/pragma 添加到我的头文件中,或通过操作.obj 文件。现实情况是,该解决方案在任何编译中只需要两个项目中的一个,因此条件编译的简单方法非常好,但我的首选是将两个项目一起编译。