zoukankan      html  css  js  c++  java
  • 函数工厂

    刚才发现个好玩儿的看了半天,然后被快速排序卡住了。。。【笑哭】唉~~~算法~算法~算法~~~

    哈哈 这个 网址 还不让访问。。。看下面那个 链接 找找看吧。

    这是那个连接有兴趣 可以去看看还蛮好玩的。

    慢慢来~,越是着急,越要慢,越是陌生的道路,越是不能跑。

    先把 前面说过的 lib的例子在复习一遍。还是用 c写的,C++的调用还是没有去弄。

    这次加了一个 头文件,稍微高端了一点儿。

    为了保证程序的运行分别有这么几个地方要写:FunctionFactoryLib.lib;useFunctionFactory.c;myFunction.h;以及lib文件复制到当前目录下;

    FunctionFactoryLib.lib

    __declspec(dllexport)
    int myAdd(int a, int b){
        return a + b;
    }
    __declspec(dllexport)
    int myMinus(int a, int b){
        return a - b;
    }
    __declspec(dllexport)
    int myMultiple(int a, int b){
        return a*b;
    }
    __declspec(dllexport)
    int myDivision(int a, int b){
        return a / b;
    }
    
    __declspec(dllexport)
    int myMax(int a, int b){
        if (a > b)
            return a;
        return b;
    }
    __declspec(dllexport)
    int myMin(int a, int b){
    
        if (a < b)
            return a;
        return b;
    }

    useFunctionFactory里面的main.c

    #include <stdio.h>
    
    #include "myFunction.h"
    
    #pragma comment(lib,"FunctionFactoryLib.lib")//这句话忘掉了
    int main(){
    
        printf("myAdd(9,3) =%d 
    ", myAdd(9, 3));
        printf("myMinus(9,3) =%d 
    ", myMinus(9, 3));
        printf("myMultiple(9,3) =%d 
    ", myMultiple(9, 3));
        printf("myDivision(9,3) =%d 
    ", myDivision(9, 3));
        printf("myMax(9,3) =%d 
    ", myMax(9, 3));
        printf("myMin(9,3) =%d 
    ", myMin(9, 3));
    
        getchar();
    
    }

    myFunction.h

    #ifndef _MYFUNCTION
    #define _MYFUNCTION
    int myAdd(int, int);
    int myMinus(int, int);
    int myMultiple(int, int);
    int myDivision(int, int);
    int myMax(int, int);
    int myMin(int, int);
    #endif

    这种情况下 我们可以 用dumpbin /exports FunctionFactoryLib.dll 可以看看 人家都写了那些函数用于被调用。

    /*

    为了把这个东西用起来 老娘还颇费了一番功夫。。。

    不知道 为什么我这里面没有这个 dumpbin.exe 所以 去下载了一个。

    然后配到系统环境里面。

    尿了,看来是时候,把我这个环境重新弄一遍了,下了dumpbin 然后 说没有 link.exe 然后 下了一个 linkd.exe 被坑了,下载对了之后,又说缺少mspdb60.dll 就大概想到 还是当初 vs2013有问题。因为到现在 我的vs都创建不了 控制台应用程序。。。尿了,,,

    意淫一下 加上我看到了我 我想看到的结果 

    利用 dumpbin /imports 文件名.exe 查看当前文件导入了什么dll文件

    利用 dumpbin /exports 文件名.dll 查看当前 dll文件里面都有什么可供使用的函数。

    参见 博文:http://www.cnblogs.com/dyllove98/archive/2013/06/20/3146922.html

    我就是到这里面看到上面那个 笑话的~不要看太久·~~~,看个一页儿半,就得想到该去干活了~~~

    */

    但是 有时候 我们就是 根本都不想让人家知道我们用了什么函数。

    这种情况下可以使用函数工厂,把我们写的这6个方法在进行一次封装。这样,他就是用工具 或者 这种vs自带的 dumpbin.exe 也不能知道我们使用了什么函数,因为 他能得到的就只是 一个 调用函数们的指针函数入口。

    长成这个样子:

    int myMax(int a,int b){

    if(a>b)return a;

    return b;

    }

    void *myFunctions(const char *p){

      if(strcmp(p,"myMax"))return myMax;//? 我试试

    }

    //好像明白了 我每次下面都会报缺失 无法查找或者打开pdb 我想这就是 为什么我没有办法 创建 控制台应用程序 以及,没有办法 使用 dumpbin 等等操作的原因了。。。

    换一台比较靠谱的机器。

    当前这台机器貌似 还有12天 就要让我注册这个 程序了。。。

    换了一天机器貌似依然不可以

     

  • 相关阅读:
    正确解读free -m
    linux命令总结之traceroute命令
    OSI七层模型详解
    Linux运维七:网络基础
    python contextlib 上下文管理器
    Django扩展自定义manage命令
    Elasticsearch分片、副本与路由(shard replica routing)
    EsRejectedExecutionException排错与线程池类型
    python重试(指数退避算法)
    Redis实现分布式锁
  • 原文地址:https://www.cnblogs.com/letben/p/5226920.html
Copyright © 2011-2022 走看看