请问大家,如何在纯C下调用DLL文件,
#include <XXX.h>
#pragma comment(lib, "XXX.lib")
是不是只能用在VC中??

解决方案 »

  1.   

    如果是静态链接那么只要链接器支持就行。纯C是可以的。如果是动态链接,在Windows下必须使用LoadLibrary加载DLL,才行。你给出的方法是静态链接的,绝大多数的C编译器都是支持的,并不是只能用在VC中。
      

  2.   

    请问一下,什么是静态链接和动态链接?我就是想在一个只支持ANSI C的环境下调用DLL,我应该怎么办?
      

  3.   

    应用程序使用DLL可以采用两种方式:一种是隐式链接(静态),另一种是显式链接(动态)。隐式链接是指将相应的DLL的lib加载到程序中,也就是你上面那样写的,实现方便,但缺点是不灵活。显式链接是应用程序在执行过程中随时可以加载DLL文件,也可以随时卸载DLL文件,这是隐式链接所无法作到的,所以显式链接具有更好的灵活性,对于解释性语言更为合适。不过实现显式链接要麻烦一些。在应用程序中用LoadLibrary或MFC提供的AfxLoadLibrary显式的将自己所做的动态链接库调进来,动态链接库的文件名即是上述两个函数的参数,此后再用GetProcAddress()获取想要引入的函数。自此,你就可以象使用如同在应用程序自定义的函数一样来调用此引入函数了。在应用程序退出之前,应该用FreeLibrary或MFC提供的AfxFreeLibrary释放动态链接库。你想要在C环境下调用,最好不要写常规的DLL(Regular DLL),要写Non-MFC DLL
      

  4.   

    TO slience(疏星朗月):是这样的,我的DLL文件是别人提供的,我只想在Labwindows(不知道你是否知道这个开发平台,它只支持ANSIC),调用别人提供的DLL文件,用
    #include <XXX.h>
    #pragma comment(lib, "XXX.lib")
    可以吗?
      

  5.   

    #include <XXX.h>
    #pragma comment(lib, "XXX.lib")
    这是在vc下的加载连接库的方法不一定在Labwindows就是这样那要看Labwindows是如何加载的了,找找资料