我现在要做c 和 c++ 的混合编程,就是在一个mfc的对话框程序中调用一些c 实现的函数,例如:一个c定义的函数 DWORD WINAPI Accptconnect(PVOID hsock);    这个函数该怎么在我的mfc程序中定义和实现。    我编译时没问题,但是连接时出了这个问题:fgDlg.obj : error LNK2001: unresolved external symbol "unsigned long __stdcall Accptconnect(void *)" (?Accptconnect@@YGKPAX@Z)
    有人说要使用extern “C”,可是我不知道这个修改符怎么用啊?
    请给小弟讲讲,最好给出示例代码,谢谢

解决方案 »

  1.   

    Accptconnect这个函数是有源代码还是只有dll?
      

  2.   

    没有,我不用库;
    我有c 的代码,我现在要把那些代码容到我的mfc程序中
      

  3.   

    我写程序也喜欢C和C++混合用从来没出问题啊 
    把你代码发给我或者贴上来看看 [email protected]
      

  4.   

    我直接在一个.cpp文件中写是DWORD WINAPI Accptconnect(PVOID)然后还在这个.cpp文件中使用了,没有出问题;晕了,理论上WINAPI 的函数就可以直接在c++里用的,可是前面那个连接错误是怎么出的??现在谁给说说那个extern “C”的用法?
      

  5.   

    然后还是在那个.cpp文件中调用Accptconnect函数,没有出问题;现在谁给说说那个extern “C” 的用法??
      

  6.   

    extern “C”表示函数是以C语言的方式调用
      

  7.   

    自定义的函数可以单独定义,常用的方式,为了维护方便结构如下所示。这样肯定没问题。
    添加两个文件MyFun.h和MyFun.cppMyFunc.h文件#ifndef _INC_MYFUN
    #define _INC_MYFUNDWORD WINAPI Accptconnect(PVOID hsock);#endif//!_INC_MYFUMyFunc.cpp文件
    DWORD WINAPI Accptconnect(PVOID hsock)
    {
    DWORD xx;
    //函数实现代码
     return xx;
    }调用到Accptconnect函数的文件添加
    #include "MyFun.h"
      

  8.   

    extern “C”多用在dll等中,表示导出函数时是以C语言的方式来调用调用
      

  9.   

    #ifndef _INC_MYFUN
    #define _INC_MYFUN#endif//!_INC_MYFUN这个有什么用 ???
      

  10.   

    如果_INC_MYFUN 不存在, 就定义,
    #define _INC_MYFUN DWORD WINAPI Accptconnect(PVOID hsock);
      

  11.   

    链接时找不到函数,应该是include有问题
      

  12.   

    extern “C”:的用法:
    extern "C" 函数原型;
    或把所有在C++中用到的C函数的原型放在一个头文件中(如#include "inc.h"),然后用
    extern "C"{include "inc.h"};
      

  13.   

    TO:
    回复人: rhettxie(飘) 
     
       #ifndef _INC_MYFUN
    #define _INC_MYFUN#endif//!_INC_MYFUN这个有什么用 ???
      
     ----------------------
    防止头文件被多次编译