zoukankan      html  css  js  c++  java
  • vc++, DLL 中定义 重载函数

    最近做了一些VC++动态链接库的封装,碰到一个问题,在 non-mfc dll模式下,如何实现函数重载,网上查找了一些资料,比较少,经过一番的摸索,终于实现了,分享如下:

    1.问题:

    要实现

    swap(int a,int b);

    swap(float a,float b);

    两个函数的重载。

    2.错误的解决方法:

    常规的定义头文件方法如下:

    /*testDll.h*/

    #ifndef DLL_TESTDLL_H

    #define DLL_TESTDLL_H

        extern "C"  _declspec(dllexport) swap(int a,int b);

        extern "C"  _declspec(dllexport) swap(float a,float b);

    #endif

    但是这个编译会报错,因为 extern "C" 修饰的函数,要求标函数按照C语言方式编译和连接,而c语言中,不能实现函数的重载。

    3. 正确的解决办法

    这时只需将 extern "C" 去掉,是函数以C++方式编译和 连接即可。

    /*testDll.h*/

    #ifndef DLL_TESTDLL_H

    #define DLL_TESTDLL_H

        _declspec(dllexport) swap(int a,int b);

        _declspec(dllexport) swap(float a,float b);

    #endif

  • 相关阅读:
    Android 自定义标题栏 并进行事件处理
    java synchronized详解
    Java中LinkedList与ArrayList有什么区别
    android动态全屏切换
    java线程机制介绍
    设置导航栏背景和文字属性
    Dictionary的用法
    bundle
    解析Json
    Copy与MutableCopy
  • 原文地址:https://www.cnblogs.com/vranger/p/3094429.html
Copyright © 2011-2022 走看看