繁体   English   中英

具有相同名称功能的具有不同项目的Visual Studio解决方案

[英]Visual Studio solution with different projects with functions of the identical name

我有一个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文件。 现实情况是,该解决方案在任何编译中仅需要两个项目之一,因此有条件编译的一种简单方法就很好了,但是我的首选是将两个项目一起编译。

这违反了一个定义规则 ,该规则仅声明整个程序中可能存在一个模板,类型,函数或对象的一个定义。 要解决此问题,请按名称或通过参数重载使两个函数的签名唯一,将它们放置在不同的名称空间中,或者如果您同时需要两个库,请使用条件编译。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM