0
我有一个VS10解决方案,其中包含2个具有相同名称功能的项目。链接器抱怨(抛出警告)关于第二个定义(同名的两个功能)越来越被忽略:Visual Studio解决方案与具有相同名称的功能的不同项目
warning LNK4006: "void __cdecl function_name(short *,class Bbox *,int,int,struct FILE_NAMES *,unsigned char *)" ([email protected]@[email protected]@[email protected]@[email protected]) already defined in XXX.lib(segment.obj); second definition ignored
这将导致第二个项目(被忽略的一个)的函数的调用指向的功能第一个项目(因为定义被忽略)。
我的问题是:有没有什么办法可以避免/解决这个问题,除了重命名所有在两个项目中具有相同名称的函数?例如,通过将#if/pragma添加到我的头文件中,或者通过操作.obj文件。实际情况是,解决方案只需要编译过程中的两个项目中的一个,因此条件编译的一个简单方法非常好,但我的第一选择是将两个项目编译在一起。
谢谢!你有条件编译的链接吗? – SMir
[This](http://en.cppreference.com/w/cpp/preprocessor/conditional)关于CPPReference的页面应该让你开始。 –
翻译单位是一个cpp文件,还是项目或整个解决方案?相同名称的功能驻留在两个不同的项目中。基于wiki页面,TU是一个cpp文件,在这种情况下,不同项目中的相同名称不应该成为问题。我完全错了吗? – SMir