extern "C" 针对全局函数.

解决方案 »

  1.   

    对要移植的所有文件都加一个 extern"C" 语句看看
      

  2.   

    可是我申明的是全局函数阿........
    #include "waver.h" 
    #include .......
    ...........char *WaveOriginal(SThttpenv *env, long *len,  struct _wrtime *header, long *hlen);...........................
    ...........................void CORUNTService::Run(DWORD dwArgc, LPTSTR * ppszArgv) {...........................
    ........................... extern "C"{
    Rret= (char *)WaveOriginal(&env, &len, &header ,&hlen);
                }..........................
    ..........................
    有什么问题吗
      

  3.   

    那你说怎么解决,如果要一个一个改,这么多库文件,faint!
      

  4.   

    看看InitGuid.h,也许有解决方法啊
      

  5.   

    InitGuid.h ,不知道这是个什么东东 :(
      

  6.   

    不用加extern "C",直接调用
      

  7.   

    extern "C"
    {
    extern int function();
    extern char  var[255];//引用
    }
    加在要引用"C"代码的区域;
    char  var[255];//声明
    加在"C"代码中;对于编译时的错误,是由于编译器参数问题,去掉DEBUG中的"/YU..",具体看MSDN.
    好象是VC中全局变量编译时加"_",以示与C的差别.
    我是刚学就卖.
    http://www.csdn.net/expert/topic/609/609674.xml?temp=.937649
      

  8.   

    kogansei(kogansei) 
    去掉DEBUG中的"/YU..",什么意思,是 project-> setting 里的吗
    msdn 看什么地方的
      

  9.   

    是的.
    project-> setting-->C/C++-->project options
      

  10.   

    对了,下面的连接错误码"C2010"可以知道是什么.
    在MSDN中
      

  11.   

    可能是调用规则上的错误,用PASCAL调用试一下
      

  12.   

    可能是C与C++的库文件不一样,加入#include  “InitGuid.h“ 试试
      

  13.   

    下面这样呢?........
    #include "waver.h" 
    #include .......
    ...........extern "C" char *WaveOriginal(SThttpenv *env, long *len,  struct _wrtime *header, long *hlen);...........................
    ...........................void CORUNTService::Run(DWORD dwArgc, LPTSTR * ppszArgv) {...........................
    ...........................
    Rret= (char *)WaveOriginal(&env, &len, &header ,&hlen);
      

  14.   

    咳,,threads()
    虽然很感谢,但是这种方法我早就试过了
    算了,明天就散分了
    辛苦各位了