error LNK2038: XXXXX 不匹配的原因

    MSDN官网的解释,内容全英文:http://msdn.microsoft.com/en-us/library/ee956429.aspx

    VC编译器在编译时,会把对象的name和value作为一条记录保存起来。在连接时,连接器会检查这些记录是否匹配。

    语法是:

#pragma detect_mismatch( "name", "value"))

注意:

        当你链接项目时,如果两个对象有相同的name字段而value字段不一样的时,链接器会抛出Link Error 2038。使用pragma来检测记录的匹配性的目的是,解决被连接在一起的文件中中对象的一致性。name和value都是字符串常量,遵循字符串常量的的转译规则和级联规则。它们大小写敏感,均不能包含逗号,引用,等号和'\0'。

示例:

        在这个例子中,创建了两个具有相同版本标识符不同版本标号的文件。


 

// pragma_directive_detect_mismatch_a.cpp
#pragma detect_mismatch("myLib_version", "9")
int main ()
{
   return 0;
}

// pragma_directive_detect_mismatch_b.cpp
#pragma detect_mismatch("myLib_version", "1")

        当你把这两个文件放在同一工程里编译链接的话,就会得到Link Error 2038。

 


 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值