C语言动态链接库DLL的调用

  • 浏览:5856
  • |
  • 更新:

我只会C,用的是“老得掉牙”的VC++6.0,想实现最简单的dll的调用。一通百度之后终有所悟。好结果&好心情当分而享之!本着“简洁美”原则,传达下本篇摘要:

.c->cl编译器->.obj->link链接器->.dll。在另一程序中调用该dll实现a+b

工具/原料

  • VC++6.0

方法/步骤

  1. 1

    新建DLLTest文件夹,在该文件夹中新建source文件夹

    C语言动态链接库DLL的调用
  2. 2

    在source文件夹中造add.c(    注意.cpp不行   )关门放代码:

    _declspec(dllexport)int add(int a,int b){ return a + b;}

    保存

    C语言动态链接库DLL的调用
    C语言动态链接库DLL的调用
    C语言动态链接库DLL的调用
  3. 3

    win+R+cmd请出总指挥“命令行”,输入(小心空格)

    cl /c E:\VCfile\DLLTest\source\add.c /FoE:\VCfile\DLLTest\source\add.obj开始挥舞编译器大棒。挥舞原则:

    /c:只编译

    E……add.c:C文件的老巢(替换成你的add.c路径)

    /Fo:造出个obj

    E……add.obj:obj放这儿(随机应变部分)

    看见没?.obj已经诞生了

    【如果找不到cl编译器,只需3步:一步,环境变量->系统变量->path中添加cl.exe路径,分好与前面分开(一般是:鬼晓得你把VC6安装在哪儿\VC6.0\Microsoft Visual Studio\VC98\Bin);二步,    新建     个名为INCLUDE的系统变量,值为:你的VC6安装位置\VC6.0\Microsoft Visual Studio\VC98\Include,三步:和二步类似,     新建     LIB变量,值为你的VC6安装位置\VC6.0\Microsoft Visual Studio\VC98\Lib】

    C语言动态链接库DLL的调用
  4. 3
    相关内容未经许可获取自百度经验
  5. 4

    继续输入(路径也要随机应变)

    link /DLL /out:E:\VCfile\DLLTest\source\add.dll E:\VCfile\DLLTest\source\add.obj

    开始挥舞链接器大棒,和cl类似。两大棒下去,眼睁睁看到add.dll出来(看命令行后面的文件夹中已经出现add.dll)。哈哈

    C语言动态链接库DLL的调用
  6. 5

    dll的制造就告一段落,下面调用dll。

    新建源文件call_dll.c或.cpp放到DLLTest文件夹,同时add.dll也复制过来(看图),在call_dll.c中放入以下代码:

    #include <stdio.h>#include <windows.h>

    typedef int(* my_fun)(int a,int b);

    int main(void){ HINSTANCE dllA; my_fun f1;

     dllA = LoadLibrary("add.dll"); if(NULL==dllA)  printf("无法加载dll!\n"); f1 = (my_fun)GetProcAddress(dllA,"add"); if(NULL==f1)  printf("找不到函数地址!\n");

     printf("调用结果:%d\n", f1(2,3));

     return 0;}

    C语言动态链接库DLL的调用
  7. 6

    编译,连接运行出现个5!此刻是属于程序员的你的,加鸡腿!

    C语言动态链接库DLL的调用
    END
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。
展开阅读全部