error LNK2038: XXXXX 不匹配的原因

来源:互联网 发布:苹果电脑卸载软件密码 编辑:程序博客网 时间:2024/05/05 07:14

    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。

 


 

 

原创粉丝点击