我在C++中调用C文件的函数,声明extern "C" FuncName(...),编译出错error C2732: linkage specification contradicts earlier specification for 'see FuncName去掉Extern"C",联接出错error LNK2001: unresolved external symbol "void __cdecl FuncName(struct Globals *,void *)" (?seed_proc_sync_data@@YAXPAUSEEDGlobals@@PAX@Z)what would i do?what would i do?

解决方案 »

  1.   

    在一个 .c文件里实现,在一个.h里声明。
    cpp文件包含这个.h时用extern "C"括起:
    extern "C" {
    #include "x.h"
    }
      

  2.   

    错误说 FuncName *.cpp中的 extern "C" 与头文件中的定义不一致(因为头文件中没有)正常的用法:
    头文件中
    extern "C" void FuncName();CPP中
    void FuncName()
    {
      ...
    }
      

  3.   

    按卖柴火的小男孩所说,可以了,不过我还是比较晕,因为我在CPP里已经
    include x.h了。为啥在extren "C"里还include?AND,我马上给你分,sale match little boy.
      

  4.   

    extern "C" 的目的是防止C++ COMPILE chang the functions name
    #include 若不放extern "C" The cpp file's object 必然找不到The func
      

  5.   

    不可能,我另一个函数的头文件包含进来后,反而编译出错了error C2733: second C linkage of overloaded function 'mycfuntion' not allowed.
    把include放到外面,就好了,另两个函数的头文件却必须放到extern "C"{}里才行。
      

  6.   

    When:
    在一个 .c文件里实现,在一个.h里声明。
    cpp文件包含这个.h时用extern "C"括起若无 *.c file, 用不到 extern "C"