当然可以,先建一个C++的静态库或动态库工程,把第三方库代码放进去,同时自己写一些函数做接口,包装一下对第三方库的调用。然后以extern "C"的形式导出函数。然后在纯C工程中,用头文件声明一下导出的函数,引入一下你之前写的库#pragma comment(lib, "xxx.lib"),就可以调用的。

解决方案 »

  1.   

    可以调用,注意extern "C"的使用
      

  2.   

    第三方库的头文件当然不能出现在的你纯C工程中,你需要建一个C++的静态库或动态库工程,对这个第三方库的接口做一些包装,提供一些extern "C"的函数接口。
    比如第三方库有一个DrawImage类用于在窗口上画图。
    原本这个DrawImage类的用法是:
    DrawImage draw;
    draw.Open("c:\\1.jpg");
    draw.Draw(hwnd);  //hwnd是窗口句柄
    那么,你用C++写的静态库或动态库工程中就把它包装一下,你自己写一个函数
    extern "C" void DrawImage(HWND hwnd, char *szFilePath)
    {
              DrawImage draw;
              draw.Open(szFilePath);
              draw.Draw(hwnd); 
    }
    然后在你的纯C工程中,extern "C" void DrawImage(HWND hwnd, char *szFilePath)声明一下
    #pragma comment(lib, "xxx.lib")引入你用C++写的静态库或动态库
    就可以在纯C工程中直接调用DrawImage这个函数了
      

  3.   

    跟正“然后在你的纯C工程中, void DrawImage(HWND hwnd, char *szFilePath)声明一下”