zoukankan      html  css  js  c++  java
  • VC++ 静态DLL模板-隐式调用

    1、VS2003新建DLL项目dllTest

    2、项目dllTest中添加脚本lib.h,代码如下:

    1 //lib.h
    2 #ifndef LIB_H
    3 #define LIB_H
    4 extern "C" int add(int x,int y);
    5 extern "C" int mius(int x,int y);
    6 #endif 

    3、项目dllTest中添加脚本lib.cpp,代码如下:

     1 //lib.cpp
     2 #include "lib.h"
     3 int add(int x,int y)
     4 {
     5     return x + y;
     6 }
     7 int mius(int x,int y)
     8 {
     9     return x - y;
    10 }

    4、项目dllTest中添加脚本lib.def,代码如下:

    1 LIBRARY dllTest
    2 EXPORTS
    3 add @ 1 
    4 mius @ 2

    5、build生成libTest.lib及libTest.dll
    6、添加检测项目dllCall

    7、添加主程序脚本dllCall.cpp,代码如下:

    特别说明:与静态DLL模板中对比就会发现,此处并没用引用dllTest的头文件lib.h,同时声明与动态声明也有些不同,但却是静态引用。关键是dllTest项目中lib.def导出接口模块定义所致。同时因为是静态引用就需要所加载的dllTest.dll文件必须在当前目录下!

     1 #include "stdafx.h"
     2 #include "windows.h"
     3 
     4 #pragma comment(lib,"..\Debug\dllTest.lib") 
     5 //在link时,应链接dllTest.lib文件
     6 //Lib库中仅仅是关于其对应DLL文件中函数的重定位信息
     7 extern "C" _declspec(dllimport) add(int x,int y); 
     8 extern "C" _declspec(dllimport) mius(int x,int y); 
     9 
    10 int main(int argc, char* argv[])
    11 {  
    12     printf("2 + 3 = %d 
    ",add(2,3));
    13     printf("2 - 3 = %d 
    ",mius(2,3));
    14 
    15     return 0;
    16 }

    8、Ctrl+F5调试运行后,如图:

  • 相关阅读:
    koa2学习(二) 中间件router
    行内元素与块级函数的三个区别
    Mobile Matrices
    jquery中attr()与prop()函数用法实例详解(附用法区别)
    jquery 鼠标右键事件、左键单击事件判定
    JS回调函数(callback)
    js关闭当前页面 (窗口)的几种方式总结
    em(倍)与px的区别
    jQuery学习笔记
    通过JS判断联网类型和连接状态
  • 原文地址:https://www.cnblogs.com/jonathan236/p/3386124.html
Copyright © 2011-2022 走看看