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天 就要让我注册这个 程序了。。。

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

     

  • 相关阅读:
    Android 主题theme说明 摘记
    Android开发 去掉标题栏方法 摘记
    安卓项目五子棋代码详解(二)
    关于 ake sure class name exists, is public, and has an empty constructor that is public
    百度地图3.0实现图文并茂的覆盖物
    android onSaveInstanceState()及其配对方法。
    关于集成科大讯飞语音识别的 一个问题总结
    android 关于 webview 控制其它view的显示 以及更改view数据失败的问题总结
    C# 解析 json Newtonsoft果然强大,代码写的真好
    c#数据类型 与sql的对应关系 以及 取值范围
  • 原文地址:https://www.cnblogs.com/letben/p/5226920.html
Copyright © 2011-2022 走看看